Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Transaction distribuée sur un serveur lié entre le serveur sql et mysql

Théoriquement, cela devrait fonctionner.

Je suggérerais différentes étapes pour résoudre ce problème :

  1. Avez-vous déjà vérifié votre moteur de stockage MySql ? Il ne semble que le support du moteur de stockage InnoDB distribue les transactions par document MySql :https://dev.mysql.com/doc/refman/5.7/en/xa.html

  2. Voyez si vous pouvez utiliser la connexion de configuration des connecteurs MySQL pour vous connecter à MySql dans SQL Server au lieu du fournisseur OLEDB, qui indique par le document MySql ci-dessus qui prend en charge la transaction de distribution.

  3. Si cela ne fonctionne toujours pas, il se peut que le service MSDTC lui-même ait un problème, voyez si vous pouvez l'isoler comme obtenir une instance SQL Server en cours d'exécution sur la boîte de serveur MySql (si vous utilisez Windows MySql), ou essayez d'installer Windows MySql sur le Boîte Sql Server pour obtenir une transaction distribuée fonctionnant entre deux MySql. Ce qui pourrait vous indiquer le problème réel.

MODIF :

Malheureusement, il semble que vous ayez prouvé que cela ne fonctionnait pas, j'ai regardé de plus près le document MySql et désolé, il semble que je ne l'ai pas lu attentivement, il dit :

Actuellement, parmi les connecteurs MySQL, MySQL Connector/J 5.0.0 et supérieur prend directement en charge XA

Et par une autre recherche sur Google, j'ai trouvé ceci :https://bugs.mysql.com/bug.php?id=37283, les gens signalent ce bogue il y a de nombreuses années et ils l'ont marqué comme ne pouvant pas être résolu.

Quelqu'un a suggéré quelque chose ici:https://social.msdn.microsoft.com/Forums/en-US/fc07937d-8b42-43da-8c75-3a4966ab95f9/xa-msdtc?forum=windowstransactionsprogramming, qui consiste à implémenter votre propre XA- Gestionnaires de ressources conformes à utiliser par votre application (https://msdn.microsoft.com/en-us/library/ms684317.aspx)