SQL Server在复制时触发

问题描述 投票:4回答:4

我需要创建一个SQL Server数据库,它将通过某个复制机制从另一个数据库接收更新。我需要编写插入,更新和删除触发器,这些触发器将在此重新发生时执行。

我有触发器的经验但没有复制经验。

我应该使用Transactional还是Merge复制,还是重要?

设计为在执行简单的SQL插入语句时运行的触发器是否也会在复制时运行?

sql-server sql-server-2008 triggers replication
4个回答
4
投票

这得看情况。

如果要应用的更新是针对隔离的表,即给定表的所有数据仅来自发布者,则可以使用事务复制。

另一方面,如果您希望将表内容(即订单表)与订单放在两个站点上进行组合,那么您可能希望查看使用合并复制。

关于触发器,您可以应用“非复制”配置来控制其行为。请参阅以下文章以供参考。

http://msdn.microsoft.com/en-us/library/ms152529.aspx

干杯,约翰


4
投票

CREATE TRIGGER syntax on MSDN

CREATE TRIGGER
...
[ NOT FOR REPLICATION ] 

这表示在复制时执行是触发器的默认行为,可以通过指定NOT FOR REPLICATION来禁用。


2
投票

使用您提供的信息很难回答您的问题。我在你的问题中添加了一些评论,要求澄清信息。

这是一篇关于MSDN的文章应该有所帮助:http://msdn.microsoft.com/en-us/library/ms152529.aspx

默认情况下,除非指定“NOT FOR REPLICATION”,否则将在复制期间触发触发器。它们的工作方式与简单的insert语句相同。

事务和合并复制是非常不同的,但两个选项的触发器行为类似。


0
投票

除了触发器之外,还有一些替代选项可供您使用。

  1. 您可以修改订户(目标)数据库上的复制过程。
  2. 如果使用2008,您可以在订阅者上使用“更改跟踪”来查找要“执行某些操作”的表,然后创建批处理以处理“基于集合”的数据,而不是处理任意行。例如。每个X运行一个SSIS包。
© www.soinside.com 2019 - 2024. All rights reserved.