复制时的SQL Server触发器
问题描述:
我需要创建一个SQL Server数据库,它将通过某个复制机制从另一个数据库接收更新。我需要编写插入,更新和删除触发器,这些触发器会在发生这种复制时执行。复制时的SQL Server触发器
我有触发器的经验,但没有复制。
我应该使用事务性还是合并复制,还是这很重要?
在执行简单SQL插入语句时设计运行的触发器是否也会在发生复制时运行?
答
嗯,这取决于。
如果您打算应用的更新是隔离表,即给定表的所有数据都来自发布服务器,那么您可以使用事务复制。
另一方面,如果您希望将表内容(即订单表)与两个站点上的订单组合在一起,那么您应该考虑使用合并复制。
关于触发器,有一个“不适用于复制”的配置,您可以应用它来控制其行为。请参阅以下文章以供参考。
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复制”期间火规定。它们与简单插入语句的工作方式相同。
交易和合并复制是非常不同的,但触发器对于这两个选项的行为相似。
答
有几种替代方案可供选择,而不是触发器。
- 您可以修改订阅服务器(目标)数据库上的复制过程。
- 如果使用2008,您可以在订户上使用更改跟踪以查找要“执行某些操作”的表,然后创建批处理以处理“基于集”的数据而不是各行。例如。每个X都运行一个SSIS包。
复制是双向发生还是单向发生?涉及多少个SQL Server实例? – 2009-02-16 05:29:28