无需交易即可触发?
时间:2020-03-05 18:41:28 来源:igfitidea点击:
是否可以创建不在事务中的触发器?
我想使用触发器来更新链接服务器上的数据,但是由于防火墙问题,我们无法在两个服务器之间创建分布式事务。
解决方案
回答
我知道这没有帮助,因此我可能对此不满意,但实际上,解决方案是解决防火墙问题。
我认为,如果我们使用远程(未链接)服务器(如今这已不再是首选选项),则可以使用SET REMOTE_PROC_TRANSACTIONS OFF来防止将DTC用于远程事务,这可能在这里起到了正确的作用。但这可能对我们使用链接服务器毫无帮助。
回答
我们可能想要的是一个包含链接服务器更新的队列和一个从队列中读取数据并更新远程服务器的进程的组合。然后,触发器将作为正常事务的一部分将消息插入队列。该数据将由单独的进程读取,并用于更新远程服务器。流程中需要逻辑处理错误(并可能重试)。
队列可以用一个或者多个表来实现。