
Problema con transacciones distribuidas
Publicado por brayan (1 intervención) el 24/07/2014 22:30:52
Buenas ,
Tengo un problema al realizar una transacción desde mi servidor SQL a un servidor vinculado OLE DB "MSDASQL" ( esta conectado a un servidor MySql), el tema es que al realizar un UPDATE/DELETE/INSERT no me deja, ya que el proveedor OLE DB no puedo iniciar una transacción distribuida. Les muestro un fragmento de prueba :
--------------------------------------------------------------------------------------------------------------------------
BEGIN TRANSACTION / BEGIN DISTRIBUTED TRANSACTION
BEGIN TRY
select top 10 *into #temp from sales_entidades
delete openquery(conexiomysql,'select * from santa_ana.cliente')
where cod_entidad in (select cod_entidad from #temp )
print 'Transaccion completada correctamente'
COMMIT TRANSACTION
END TRY
BEGIN CATCH
print ISNULL(ERROR_MESSAGE(),'')
ROLLBACK TRANSACTION
END CATCH
Mensaje : No se pudo realizar la operación porque el proveedor OLE DB "MSDASQL" del servidor vinculado "conexiomysql" no pudo iniciar una transacción distribuida.
--------------------------------------------------------------------------------------------------------------------------
Como verán, estoy usando openquery, y el nombre de mi servidor vinculado es "conexiomysql".
Cabo recalcar lo siguiente:
1. He configurado el servicio de transacciones de windows , el MSTDC en el servicio de componentes
2. El servidor de SQL y MySQL estan en mi propia PC, por lo que la configuración del MSTDC afecto a los 2 servidores
Bastando la redundancia, este error aparece al poner las clausula TRANSACTION, ya que sin ella no tengo problema alguno, pero por cuestión de perfomace, hay que ver la integridad de la data. Si en caso hay un solución a este problema o exista otra manera de pasar datos del SQL servor a MYSQL, seria de gran ayuda.
Saludos.
Tengo un problema al realizar una transacción desde mi servidor SQL a un servidor vinculado OLE DB "MSDASQL" ( esta conectado a un servidor MySql), el tema es que al realizar un UPDATE/DELETE/INSERT no me deja, ya que el proveedor OLE DB no puedo iniciar una transacción distribuida. Les muestro un fragmento de prueba :
--------------------------------------------------------------------------------------------------------------------------
BEGIN TRANSACTION / BEGIN DISTRIBUTED TRANSACTION
BEGIN TRY
select top 10 *into #temp from sales_entidades
delete openquery(conexiomysql,'select * from santa_ana.cliente')
where cod_entidad in (select cod_entidad from #temp )
print 'Transaccion completada correctamente'
COMMIT TRANSACTION
END TRY
BEGIN CATCH
print ISNULL(ERROR_MESSAGE(),'')
ROLLBACK TRANSACTION
END CATCH
Mensaje : No se pudo realizar la operación porque el proveedor OLE DB "MSDASQL" del servidor vinculado "conexiomysql" no pudo iniciar una transacción distribuida.
--------------------------------------------------------------------------------------------------------------------------
Como verán, estoy usando openquery, y el nombre de mi servidor vinculado es "conexiomysql".
Cabo recalcar lo siguiente:
1. He configurado el servicio de transacciones de windows , el MSTDC en el servicio de componentes
2. El servidor de SQL y MySQL estan en mi propia PC, por lo que la configuración del MSTDC afecto a los 2 servidores
Bastando la redundancia, este error aparece al poner las clausula TRANSACTION, ya que sin ella no tengo problema alguno, pero por cuestión de perfomace, hay que ver la integridad de la data. Si en caso hay un solución a este problema o exista otra manera de pasar datos del SQL servor a MYSQL, seria de gran ayuda.
Saludos.
Valora esta pregunta


0