【问题标题】:Trigger without a transaction?没有交易就触发?
【发布时间】:2010-09-06 09:25:02
【问题描述】:

是否可以创建不在事务中的触发器?

我想使用触发器更新链接服务器上的数据,但由于防火墙问题,我们无法在两台服务器之间创建分布式事务。

【问题讨论】:

    标签: sql-server tsql triggers


    【解决方案1】:

    您可能想要的是一个包含链接服务器更新的队列和一个从队列中读取数据并更新远程服务器的进程的组合。然后触发器将作为正常事务的一部分将消息插入队列。该数据将由单独的进程读取并用于更新远程服务器。处理错误(并可能重试)的过程中将需要逻辑。

    队列可以用一个或多个表来实现。

    【讨论】:

      【解决方案2】:

      我知道这没有用,所以我可能会因此而被否决,但实际上,解决方案是解决防火墙问题。

      我认为,如果您使用远程(未链接)服务器(这些天不是首选选项),那么您可以使用 SET REMOTE_PROC_TRANSACTIONS OFF 来防止将 DTC 用于远程事务,这可能在这里做正确的事情。但这可能对链接服务器没有帮助。

      【讨论】:

        猜你喜欢
        • 2015-07-15
        • 1970-01-01
        • 2016-08-01
        • 1970-01-01
        • 2019-07-27
        • 1970-01-01
        • 2015-08-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多