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
试了网上的很多方法,但问题依旧,希望知道的高手给指点一下,多谢了。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(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来处理,实测可以正常运行。
修改下:上面说的不在同一个机器上无法实现是不对的,实测在不同机器中通过回环的方法同样可以获取数据