sql >> Database >  >> RDS >> Sqlserver

Gedistribueerde transactie op gekoppelde server tussen sql-server en mysql

Theoretisch zou dit moeten werken.

Ik zou verschillende stappen voorstellen om dit op te lossen:

  1. Heb je je MySql-opslagengine al gecontroleerd? Het lijkt erop dat alleen InnoDB-opslagengine-ondersteuning de transactie per MySql-document distribueert:https://dev.mysql.com/doc/refman/5.7/en/xa.html

  2. Kijk of u kunt overschakelen naar het gebruik van de MySQL Connectors-installatieverbinding om verbinding te maken met MySql in SQL Server in plaats van de OLEDB-provider, die in het MySql-document hierboven vermeldt dat de distributietransactie wordt ondersteund.

  3. Als het nog steeds niet werkt, kan het zijn dat de MSDTC-service zelf een probleem heeft, kijk of je dat kunt isoleren, zoals een SQL Server-instantie laten draaien op de MySql-serverbox (als je Windows MySql gebruikt), of probeer Windows MySql te installeren op de Sql Server-box om de distributietransactie tussen twee MySql. Die u op het werkelijke probleem zou kunnen wijzen.

BEWERKEN:

Helaas lijkt het erop dat je hebt bewezen dat dit niet werkt, ik heb het MySql-document nader bekeken en het lijkt erop dat ik het niet grondig heb gelezen, er staat:

Momenteel ondersteunt MySQL Connector/J 5.0.0 en hoger onder de MySQL-connectoren rechtstreeks XA

En door wat andere Googlen vond ik dit:https://bugs.mysql.com/bug.php?id=37283, mensen melden deze bug vele jaren geleden en ze markeerden dit als een zal niet oplossen.

Iemand stelde hier iets voor:https://social.msdn.microsoft.com/Forums/en-US/fc07937d-8b42-43da-8c75-3a4966ab95f9/xa-msdtc?forum=windowstransactionsprogramming, namelijk het implementeren van uw eigen XA- Compliant resourcemanagers die door uw toepassing moeten worden gebruikt (https://msdn.microsoft.com/en-us/library/ms684317.aspx)



  1. Oracle RAC op clouds van derden

  2. converteer datumstring naar mysql datetime-veld

  3. Hoe het kolomgegevenstype in de SQL-database te wijzigen zonder gegevens te verliezen

  4. Postgresql Selecteer rijen waarbij kolom =matrix