Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Verteilte Transaktion auf Verbindungsserver zwischen SQL-Server und MySQL

Theoretisch sollte das funktionieren.

Ich würde verschiedene Schritte vorschlagen, um dies zu klären:

  1. Haben Sie Ihre MySql-Speicher-Engine schon überprüft? Es sieht nur so aus, als würde die InnoDB-Speicher-Engine die Transaktion per MySQL-Dokument verteilen:https://dev.mysql.com/doc/refman/5.7/en/xa.html

  2. Prüfen Sie, ob Sie zur Verwendung der Setup-Verbindung von MySQL Connectors wechseln können, um eine Verbindung zu MySql in SQL Server anstelle des OLEDB-Anbieters herzustellen, der im obigen MySql-Dokument besagt, dass die Verteilungstransaktion unterstützt wird.

  3. Wenn es immer noch nicht funktioniert, könnte es sein, dass der MSDTC-Dienst selbst ein Problem hat. Sehen Sie nach, ob Sie das isolieren können, indem Sie beispielsweise eine SQL Server-Instanz auf der MySql-Serverbox ausführen (wenn Sie Windows MySql verwenden), oder versuchen Sie, Windows MySql auf Sql Server-Box, um die Transaktion zwischen zwei MySql zu verteilen. Das könnte Sie auf das eigentliche Problem hinweisen.

BEARBEITEN:

Leider scheint es, dass Sie bewiesen haben, dass dies nicht funktioniert, ich habe mir das MySql-Dokument genauer angesehen und es tut mir leid, es sieht so aus, als hätte ich es nicht gründlich gelesen, es heißt:

Derzeit unterstützt unter den MySQL Connectors MySQL Connector/J 5.0.0 und höher XA direkt

Und durch ein anderes Googeln habe ich das gefunden:https://bugs.mysql.com/bug.php?id=37283, Leute haben diesen Fehler vor vielen Jahren gemeldet und ihn als nicht zu beheben markiert.

Jemand hat hier etwas vorgeschlagen:https://social.msdn.microsoft.com/Forums/en-US/fc07937d-8b42-43da-8c75-3a4966ab95f9/xa-msdtc?forum=windowstransactionprogramming, das darin besteht, Ihr eigenes XA- Kompatible Ressourcen-Manager zur Verwendung durch Ihre Anwendung (https://msdn.microsoft.com/en-us/library/ms684317.aspx)