触发器在链接服务器上不起作用。两台服务器都是 SQL Server 2005

触发器在链接服务器上不起作用。两台服务器都是 SQL Server 2005

我已将一台服务器与另一台服务器链接起来。我可以从链接服务器访问记录,也可以使用 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 让另一个进程执行远程插入。

相关内容