从触发器

时间:2016-09-09 22:36:56

标签: sql-server stored-procedures triggers sql-server-2008-r2

我在服务器A中创建了instead of trigger,我在其中调用了一个过程,该过程又调用了链接服务器(服务器B)中的其他过程。

触发器(A) - >步骤(A) - >程序(B)

但是,当触发器执行时,它会抛出以下错误:

  

OLE DB提供程序" SQLNCLI11"对于链接服务器" xxx"返回消息"合作伙伴事务管理器已禁用其对远程/网络事务的支持。"。   Msg 7391,Level 16,State 2,Line 1   无法执行该操作,因为OLE DB提供程序" SQLNCLI11"对于链接服务器" xxx"无法开始分布式交易。

当我这样做时:程序(A) - >程序(B)它完美地运作。可能是什么原因?

我该如何解决这个问题?分布式查询与链接服务器查询有何不同?

1 个答案:

答案 0 :(得分:0)

如果您在触发器中使用链接服务器,则需要使用DTC(不推荐使用,因为它的性能不佳,如果存在任何连接问题,您的事务将被中止)

您的程序(A)可能会填充一些队列表,然后某些计划任务可能会读取该队列表并运行程序B.

使用复制或CDC(更改数据捕获)+计划任务来触发远程服务器上的程序B

使用本地服务代理