sqlserver 数据实时同步到mysql 时出错,OLE DB 访问接口 "MSDASQL" 无法启动分布式事务。

各位高手,我按下面这个方法进行了从sqlserver到mysql的数据同步,
sqlserver 数据实时同步到mysql
操作到这步 “6.1 insert” 后,测试了一下插入数据,出现了以下错误:
无法执行该操作,因为链接服务器 "jt" 的 OLE DB 访问接口 "MSDASQL" 无法启动分布式事务。

也按这个方法设置了,但还是不行:

--设置服务器链接选项,阻止SQL Server 由于远过程调用而将本地事务提升为分布事务(重点)
USE [master]
GO
EXEC master.dbo.sp_serveroption @server=N'loopback', @optname=N'rpc out', @optvalue=N'TRUE'
GO
EXEC master.dbo.sp_serveroption @server=N'loopback', @optname=N'remote proc transaction promotion', @optvalue=N'false'
GO

试了网上的很多方法,但问题依旧,希望知道的高手给指点一下,多谢了。

阅读 10.4k
1 个回答

虽然时间长了,但正好看到这里,还是说下自己搜索的资料,给后人看到:
如果mysql和sqlserver不在同一个机器上的话,是无法实现的,因为mysql的驱动连接器不支持,如下:
MySQL OLE DB driver does not support MSDTC because it doesn’t support auto-enlistment in the ambient COM+ transaction. If you really want to, you can write your own XA.DLL to wrap MySQL OLEDB driver in an XA transaction.
也可以参照这里的解释:
MS SQL " 无法启动分布式事务"问题的解决思路
MSSQL-并发控制-1-Transaction

但如果在同一个机器上的话,可以通过创建回环的方式来解决,可参考:SQL SERVER 链接服务器,"MSDASQL" 无法启动分布式事务SqlServer实时数据同步到MySql来处理,实测可以正常运行。


修改下:上面说的不在同一个机器上无法实现是不对的,实测在不同机器中通过回环的方法同样可以获取数据

推荐问题
宣传栏