Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Transazione distribuita su server collegato tra sql server e mysql

In teoria dovrebbe funzionare.

Suggerirei diversi passaggi per risolvere questo problema:

  1. Hai già controllato il tuo motore di archiviazione MySql? Sembra che solo il supporto del motore di archiviazione InnoDB distribuisca la transazione per documento MySql:https://dev.mysql.com/doc/refman/5.7/en/xa.html

  2. Verifica se puoi passare all'utilizzo della connessione di configurazione di MySQL Connectors per connetterti a MySql in SQL Server anziché al provider OLEDB, che indica il documento MySql sopra che supporta la transazione di distribuzione.

  3. Se ancora non funziona, potrebbe essere il servizio MSDTC stesso che ha qualche problema, vedere se è possibile isolarlo come ottenere un'istanza di SQL Server in esecuzione sulla casella del server MySql (se si utilizza Windows MySql) o provare a installare Windows MySql su Sql Server box per ottenere una transazione di distribuzione funzionante tra due MySql. Il che potrebbe indicarti il ​​vero problema.

MODIFICA:

Sfortunatamente sembra che tu abbia dimostrato che non funziona, ho dato un'occhiata più da vicino al documento MySql e mi dispiace che non lo stessi leggendo a fondo, dice:

Attualmente, tra i MySQL Connector, MySQL Connector/J 5.0.0 e versioni successive supportano XA direttamente

E da qualche altro Google ho trovato questo:https://bugs.mysql.com/bug.php?id=37283, le persone segnalano questo bug molti anni fa e lo hanno contrassegnato come non risolvebile.

Qualcuno ha suggerito qualcosa qui:https://social.msdn.microsoft.com/Forums/en-US/fc07937d-8b42-43da-8c75-3a4966ab95f9/xa-msdtc?forum=windowstransactionsprogramming, ovvero implementare il proprio XA- Gestori risorse conformi che devono essere utilizzati dall'applicazione (https://msdn.microsoft.com/en-us/library/ms684317.aspx)