复制时的SQL Server触发器

问题描述:

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

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

我应该使用事务性还是合并复制,还是这很重要?

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

+0

复制是双向发生还是单向发生?涉及多少个SQL Server实例? – 2009-02-16 05:29:28

嗯,这取决于。

如果您打算应用的更新是隔离表,即给定表的所有数据都来自发布服务器,那么您可以使用事务复制。

另一方面,如果您希望将表内容(即订单表)与两个站点上的订单组合在一起,那么您应该考虑使用合并复制。

关于触发器,有一个“不适用于复制”的配置,您可以应用它来控制其行为。请参阅以下文章以供参考。

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

干杯,约翰

CREATE TRIGGER syntax on MSDN

CREATE TRIGGER 
... 
[ NOT FOR REPLICATION ] 

这表明上的复制执行为触发器的默认行为,并且可以通过指定NOT FOR REPLICATION被禁用。

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

这里是MSDN上的文章,应该有所帮助:http://msdn.microsoft.com/en-us/library/ms152529.aspx

默认情况下,将触发复制,除非“NOT FOR复制”期间火规定。它们与简单插入语句的工作方式相同。

交易和合并复制是非常不同的,但触发器对于这两个选项的行为相似。

有几种替代方案可供选择,而不是触发器。

  1. 您可以修改订阅服务器(目标)数据库上的复制过程。
  2. 如果使用2008,您可以在订户上使用更改跟踪以查找要“执行某些操作”的表,然后创建批处理以处理“基于集”的数据而不是各行。例如。每个X都运行一个SSIS包。