none
ODBC Transacciones Distribuidas RRS feed

  • Pregunta

  • Buen Día a todos, 

    Cree un ODBC de Sybase versión 15.5, estoy utilizando Integration Services  pero en las propiedades de la conexion me aparece la opcion Supports DTC Transactions en FALSE, necesito que este valor este en TRUE ya que lo necesito para un proceso de transacciones distribuidas, pero no me deja cambiarle la opción..

    Ayuda!!!

    miércoles, 29 de abril de 2015 15:05

Respuestas

  • Gracias por Responder..

    Entonces que me recomiendas, al hacerlo por OLE DB (que si me soporta las transacciones) no me deja mandar ningún tipo de variables (ODBC si me deja mandar variables) a Sybase, me aparece una pantalla negra de SQLDumper.exe y en el Log me aparece lo siguiente

    Archivo de volcado de memoria: SQLDmpr0022.mdmp : C:\Users\fhortua\Desktop\SQLDmpr0022.mdmp
    Hora de la última escritura: 29/04/2015 11:26:35
    Nombre del proceso: DtsDebugHost.exe : C:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\DtsDebugHost.exe
    Arquitectura de procesos: x86
    Código de la excepción: 0xC0000005
    Información de la excepción: El subproceso intentó leer o escribir en una dirección virtual para la que no tenía los permisos de acceso correspondientes.
    Información del montón: No presente

    Necesito obligatoriamente mandar esa variable a Sybase..


    • Editado Maurohh jueves, 30 de abril de 2015 15:38
    • Marcado como respuesta Maurohh jueves, 30 de abril de 2015 16:30
    jueves, 30 de abril de 2015 15:36
  • Entonces que me recomiendas, al hacerlo por OLE DB [...] no me deja[...]

    Como solución más simple, te recomiendo excluir esa tarea de la Transacción. Márcale la opción de transacción como "not supported" para que no se enrole en la transacción y por tanto no requiera el DTC. Y conecta la salida de "fallo" del conjunto del proceso (puedes meterlo si es necesario en un contenedor de secuencia para que tenga una única salida) a una nueva tarea que haga de "compensador" de la transacción sobre Sybase (en otras palabras, que borre o deshaga lo que se hizo durante la transacción en ese componente que hubo que excluir de la misma). No es lo ideal, pero permite salir del paso si no hay más remedio que usar ese proveedor de ODBC.
    • Marcado como respuesta Maurohh jueves, 30 de abril de 2015 16:30
    jueves, 30 de abril de 2015 16:26

Todas las respuestas

  • Las transacciones de SSIS se apoyan en el Distributed Transaction Coordinator (DTC). Este servicio no es "mágico", necesita que los distintos proveedores de acceso a las bases de datos "hablen" con él a través de sus APIs para realizar la coordinación de la transacción. Si los programadores que construyeron el driver de ODBC que estás usando no le metieron esas llamadas a las APIs del DTC, no hay nada que puedas hacer para solucionarlo; tendrás que buscarte otro driver que soporte el DTC.
    jueves, 30 de abril de 2015 5:49
  • Gracias por Responder..

    Entonces que me recomiendas, al hacerlo por OLE DB (que si me soporta las transacciones) no me deja mandar ningún tipo de variables (ODBC si me deja mandar variables) a Sybase, me aparece una pantalla negra de SQLDumper.exe y en el Log me aparece lo siguiente

    Archivo de volcado de memoria: SQLDmpr0022.mdmp : C:\Users\fhortua\Desktop\SQLDmpr0022.mdmp
    Hora de la última escritura: 29/04/2015 11:26:35
    Nombre del proceso: DtsDebugHost.exe : C:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\DtsDebugHost.exe
    Arquitectura de procesos: x86
    Código de la excepción: 0xC0000005
    Información de la excepción: El subproceso intentó leer o escribir en una dirección virtual para la que no tenía los permisos de acceso correspondientes.
    Información del montón: No presente

    Necesito obligatoriamente mandar esa variable a Sybase..


    • Editado Maurohh jueves, 30 de abril de 2015 15:38
    • Marcado como respuesta Maurohh jueves, 30 de abril de 2015 16:30
    jueves, 30 de abril de 2015 15:36
  • Entonces que me recomiendas, al hacerlo por OLE DB [...] no me deja[...]

    Como solución más simple, te recomiendo excluir esa tarea de la Transacción. Márcale la opción de transacción como "not supported" para que no se enrole en la transacción y por tanto no requiera el DTC. Y conecta la salida de "fallo" del conjunto del proceso (puedes meterlo si es necesario en un contenedor de secuencia para que tenga una única salida) a una nueva tarea que haga de "compensador" de la transacción sobre Sybase (en otras palabras, que borre o deshaga lo que se hizo durante la transacción en ese componente que hubo que excluir de la misma). No es lo ideal, pero permite salir del paso si no hay más remedio que usar ese proveedor de ODBC.
    • Marcado como respuesta Maurohh jueves, 30 de abril de 2015 16:30
    jueves, 30 de abril de 2015 16:26