0

我创建了一个更新远程 SQL Server 2005 数据库表的触发器。如果它是手动查询,则代码可以工作,但不能在触发器中工作,因为它试图将其放在事务中并且由于 MSDTC 而失败。

我们的内部服务器对远程服务器有适当的访问权限,但是远程服务器没有对内部服务器的访问权限,这会导致触发器失败吗?

我得到的错误是:

链接服务器“LinkServer”的 OLE DB 提供程序“SQLNCLI10”返回消息“合作伙伴事务管理器已禁用其对远程/网络事务的支持。”。消息 7391,级别 16,状态 2,第 1 行 由于链接服务器“LinkServer”的 OLE DB 提供程序“SQLNCLI10”无法开始分布式事务,因此无法执行操作。

我已经查看了这个并按照建议设置了所有内容,但没有快乐?

4

1 回答 1

1

如果远程服务器因任何原因不可用怎么办?

您通常应该避免在触发器中执行超出数据库的任何操作,更不用说服务器了。问题是触发器中发生的所有事情都必须是原始事务的一部分,如果触发器中出现任何问题,该事务将被回滚。

通常,如果在到达远程资源时出现间歇性问题(可能是同一服务器/实例上的不同数据库,或者真正远程的东西),您通常不希望发生这种情况。

您是否考虑过将此活动与例如Service Broker脱钩?

于 2012-05-09T12:19:02.590 回答