如何判断复制订阅服务器上是否正在执行触发器代码?

时间:2014-04-02 16:23:30

标签: sql sql-server triggers replication

我有一个正在发布用于复制的SQL Server 2012数据库,另一个服务器上定义了一个pull订阅。我有一个需要在订阅服务器端执行的触发器,但源数据库由第三方支持,以减少他们通过执行表维护无意中吹掉我的触发器的可能性我在发布服务器上定义了触发器并设置了文章复制用户触发器为True的选项。

这没关系,但是我 想要的是Trigger在发布者处执行。 (这是使用NOT FOR REPLICATION选项的相反情况。)我目前通过将触发器逻辑包装在@@ SERVERNAME的硬编码测试中来实现这一目的,但我们每5年左右在公司范围内升级服务器对于那些旧名称硬编码的东西来说,这总是很痛苦。

是否有系统视图或我可以测试的东西,而不是会说"这个数据库通过拉取订阅来到这里"?

由于

Wayne Ivory

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

也许更好的选择不是首先在发布者端有触发器,而是仅在用户端。或者您可以通过某些脚本在发布方禁用触发器。