sql server和mysql之间链接服务器上的分布式事务
我有一个表在SQL Server 2014和
MySQL上表示Table1.
Table1 ID INT,Code VARCHAR(100) 我使用“Microsoft OLEDB Provider for ODBC”在SQL Server中创建了一个链接服务器MyLinkedServer. **链接服务器** EXEC master.dbo.sp_addlinkedserver @server = N'MyLinkedServer',@srvproduct=N'MyLinkedServer',@provider=N'MSDASQL',@datasrc=N'MyLinkedServer' EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'MyLinkedServer',@useself=N'False',@locallogin=NULL,@rmtuser=N'username',@rmtpassword='########' 链接服务器设置 EXEC master.dbo.sp_serveroption @server=N'MyLinkedServer',@optname=N'data access',@optvalue=N'true' EXEC master.dbo.sp_serveroption @server=N'MyLinkedServer',@optname=N'use remote collation',@optname=N'remote proc transaction promotion',@optvalue=N'true' 链接服务器已成功创建,我可以在SQL Server中查询Mysql表. 询问 当我跑 INSERT INTO MyLinkedServer...Table1(ID,Code) SELECT 1,'Code1' 记录已插入.但是,当我启动一个事务并运行INSERT时,我收到一个错误: BEGIN TRAN INSERT INTO MyLinkedServer...Table1(ID,'Code1' COMMIT 错误:
到目前为止我尝试了什么. >在MSDTC中启用XA事务 >嵌套查询 我检查了以下链接及其建议,但错误仍然存??在: Distributed transactions between MySQL and MSSQL SQL-Server and MySQL interoperability? SQL Server and MySQL Syncing 编辑 额外细节: > MySQL正在Ubuntu机器上使用InnoDB存储引擎. 解决方法从理论上讲,这应该有效.我建议采取不同的步骤来解决这个问题: >你有没有检查过你的MySql存储引擎?它看起来只有InnoDB存储引擎支持按MySql文档分发事务:https://dev.mysql.com/doc/refman/5.7/en/xa.html 编辑: 不幸的是,看起来你证明这不起作用,我仔细看看MySql文件,抱歉看起来我没有彻底阅读它,它说:
通过其他一些谷歌搜索我发现了这个:https://bugs.mysql.com/bug.php?id=37283,人们多年前报告这个错误,他们认为这是一个不会修复. 有人在此提出了一些建议:https://social.msdn.microsoft.com/Forums/en-US/fc07937d-8b42-43da-8c75-3a4966ab95f9/xa-msdtc?forum=windowstransactionsprogramming,即实现您自己的XA兼容资源管理器以供您的应用程序使用(https://msdn.microsoft.com/en-us/library/ms684317.aspx) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |