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

发布于 2022-09-03 11:59:36 字数 617 浏览 20 评论 0

各位高手,我按下面这个方法进行了从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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烟若柳尘 2022-09-10 11:59:36

虽然时间长了,但正好看到这里,还是说下自己搜索的资料,给后人看到:
如果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来处理,实测可以正常运行。


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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文