【问题标题】:How can I tell if Trigger code is being executed at a Replication Subscriber?如何判断触发器代码是否正在复制订阅服务器上执行?
【发布时间】:2014-04-02 16:23:29
【问题描述】:

我有一个 SQL Server 2012 数据库正在发布以进行复制,并且在另一台服务器上定义了一个拉式订阅。我有一个需要在订阅者端执行的触发器,但是源数据库由第三方支持,因此为了减少他们通过执行表维护而无意中吹走我的触发器的机会,我在发布者上定义了触发器并设置了文章Copy User Triggers to True 选项。

这没问题,但我想要触发器在发布者处执行。 (这是使用 NOT FOR REPLICATION 选项的相反情况。)我目前通过在@@SERVERNAME 上的硬编码测试中包装触发逻辑来实现这一点,但我们每 5 年左右升级一次全公司的服务器,它硬编码为旧名称的东西坏了总是很痛苦的。

是否有系统视图或我可以测试的东西,而不是说“这个数据库是通过请求订阅到达这里的”?

谢谢

韦恩象牙

【问题讨论】:

    标签: sql sql-server triggers replication


    【解决方案1】:

    是的,这可以通过使用快照后脚本将触发器添加到订阅服务器来完成。看看Execute Scripts Before and After the Snapshot is Applied。这样就不会依赖于服务器名称,触发器只会存在于订阅服务器上。

    【讨论】:

      【解决方案2】:

      也许更好的选择是首先不在发布者端设置触发器,而在订阅者端设置触发器。或者您可以通过一些脚本在发布者端禁用触发器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-19
        • 2016-08-06
        相关资源
        最近更新 更多