我已将一台服务器与另一台服务器链接起来。我可以从链接服务器访问记录,也可以使用 INSERT 语句插入记录,例如
INSERT INTO [LINKED-SERVER-IP].MyDb.dbo.Customer (CustomerId, CustomerName)
SELECT CustomerId, CustomerName FROM MyCustomers WHERE CustomerId = 5
上述查询工作正常并插入记录,但是当我在触发器中使用此查询时出现以下错误。
链接服务器“Linked-Server-IP”的 OLE DB 提供程序“SQLNCLI”返回消息“合作伙伴事务管理器已禁用其对远程/网络事务的支持。”。发生了一些错误。消息 3616,级别 16,状态 1,行 1 事务在触发器中注定失败。批处理已中止。
谢谢。
答案1
触发器中的代码与 insert/update/delete 语句在同一个隐式事务中运行。因此,它会尝试在两个服务器之间共享事务,但默认情况下不允许这样做。
您是否有足够的权限来更改设置?如果没有,那么您可以考虑其他选项,例如插入本地表并复制数据,或者使用 Service Broker 让另一个进程执行远程插入。