插入触发触发器写入链接服务器时出现‘无活动事务’错误求助
跨版本SQL Server触发器同步数据的分布式事务异常问题
我需要实现两台服务器的数据同步:当触发服务器的表插入数据时,自动同步到接收服务器。目前在仅包含names字段(类型为nchar(10))的测试小表上验证触发器同步方案,其中触发服务器是SQL Server 2014,接收服务器是SQL Server 2017,两台服务器处于不同网络层级。
触发器触发时抛出以下错误:
无法执行操作,因为链接服务器xxx的SQLNCLI11无法启动分布式事务... 返回消息“无活动事务”。
需要说明的是:手动通过链接服务器执行INSERT操作完全正常,只有触发器触发时才会出现这个问题。
我已经做过的排查和配置操作包括:
- 编写了同步用的触发器
- 配置防火墙,添加了允许DTC事务出入的规则,同时开放了1433端口
- 配置了DTC的相关设置
- 调整了链接服务器的属性配置
- 尝试在触发器代码中添加
SET XACT_ABORT ON、BEGIN DISTRIBUTED TRANSACTION等命令 - 查阅了大量技术论坛的相关解决方案
如果需要查看具体的设置截图或脚本,我可以提供(会隐去敏感信息)。另外,我也在考虑改用复制方案来实现数据同步。
相关截图内容:
- 触发器代码
- 链接服务器设置
- DTC设置
- 防火墙基础设置
- 防火墙DTC规则
内容的提问来源于stack exchange,提问作者Holland_Joshua
相关产品推荐
相关产品推荐

