我创建了一个更新远程SQL Server 2005数据库表的触发器。如果代码是手动查询但在触发器中不起作用,则代码可以工作,因为它会尝试将其置于事务中并因MSDTC而失败。
我们的内部服务器具有对远程服务器的适当访问权限,但远程服务器无法访问内部服务器,这会导致触发器失败吗?
我得到的错误是:
返回链接服务器“LinkServer”的OLE DB提供程序“SQLNCLI10” 消息“合作伙伴事务管理器已禁用其支持 远程/网络事务。“。消息7391,级别16,状态2,第1行 由于OLE DB提供程序无法执行该操作 链接服务器“LinkServer”的“SQLNCLI10”无法启动 分布式交易。
我已经看了这个并按照建议设置了一切,但没有快乐?
答案 0 :(得分:1)
如果远程服务器因任何原因不可用该怎么办?
通常应避免在超出数据库的触发器中执行任何操作,更不用说服务器了。问题是触发器中发生的所有内容都是原始事务的一部分,如果触发器出现任何问题,该事务将被回滚。
如果在到达远程资源时出现间歇性问题(在同一服务器/实例上是不同的数据库,或者是真正的远程数据库),通常不希望这种情况发生。
您是否考虑过将此活动与Service Broker?
分离