Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Transação distribuída no servidor vinculado entre sql server e mysql


Teoricamente isso deve funcionar.

Sugiro diferentes etapas para resolver isso:

  1. Você já verificou seu mecanismo de armazenamento MySql? Parece que apenas o suporte ao mecanismo de armazenamento InnoDB distribui transações por documento MySql:https://dev.mysql.com/doc/refman/5.7/en/xa.html

  2. Veja se você pode alternar para usar a conexão de configuração do MySQL Connectors para se conectar ao MySql no SQL Server em vez do provedor OLEDB, que indica o documento MySql acima que suporta a transação de distribuição.

  3. Se ainda não estiver funcionando, pode ser que o próprio serviço MSDTC tenha algum problema, veja se você pode isolar isso como obter uma instância do SQL Server em execução na caixa do servidor MySql (se você estiver usando o Windows MySql) ou tente instalar o Windows MySql no Caixa Sql Server para obter a transação de distribuição trabalhando entre dois MySql. O que seria capaz de apontar para o problema real.

EDITAR:

Infelizmente, parece que você provou que isso não está funcionando, eu dei uma olhada no documento MySql e desculpe, parece que eu não estava lendo completamente, ele diz:

Atualmente, entre os MySQL Connectors, o MySQL Connector/J 5.0.0 e superior suporta XA diretamente

E por algum outro Googling eu encontrei isso:https://bugs.mysql.com/bug.php?id=37283, as pessoas relatam esse bug há muitos anos e eles marcaram isso como não será corrigido.

Alguém sugeriu algo aqui:https://social.msdn.microsoft.com/Forums/en-US/fc07937d-8b42-43da-8c75-3a4966ab95f9/xa-msdtc?forum=windowstransactionsprogramming, que é implementar seu próprio XA- Gerenciadores de recursos compatíveis a serem usados ​​pelo seu aplicativo (https://msdn.microsoft.com/en-us/library/ms684317.aspx)