我需要创建一个 SQL Server 数据库,该数据库将通过某些复制机制从另一个数据库接收更新。我需要编写插入、更新和删除触发器,在进行复制时执行这些触发器。
我有触发器的经验,但没有复制的经验。
我应该使用事务性复制还是合并复制,还是两者都可以?
当执行简单的SQL插入语句时设计的触发器,在复制发生时也会运行吗? (Traditional Chinese: 當執行簡單的SQL插入語句時設計的觸發器,在複製發生時也會運行嗎?)
我需要创建一个 SQL Server 数据库,该数据库将通过某些复制机制从另一个数据库接收更新。我需要编写插入、更新和删除触发器,在进行复制时执行这些触发器。
我有触发器的经验,但没有复制的经验。
我应该使用事务性复制还是合并复制,还是两者都可以?
当执行简单的SQL插入语句时设计的触发器,在复制发生时也会运行吗? (Traditional Chinese: 當執行簡單的SQL插入語句時設計的觸發器,在複製發生時也會運行嗎?)
这取决于情况。
如果您要应用的更新是针对隔离的表,即某个表的所有数据仅来自发布者,则可以使用事务复制。
另一方面,如果您想将表内容,例如订单表,与在两个站点上下订单的订单结合起来,则需要考虑使用合并复制。
关于触发器,您可以应用“不用于复制”的配置以控制它们的行为。请参阅以下文章供参考。
将此翻译成中文:http://msdn.microsoft.com/en-us/library/ms152529.aspx http://msdn.microsoft.com/en-us/library/ms152529.aspx
干杯,约翰。
在MSDN上的CREATE TRIGGER语法
CREATE TRIGGER
...
[ NOT FOR REPLICATION ]
这意味着触发器默认情况下在复制上执行,可以通过指定NOT FOR REPLICATION
来禁用。
根据您提供的信息很难回答您的问题。我在您的问题上添加了一些评论,要求您提供更明确的信息。
这里有一篇在MSDN上的文章应该会有所帮助:http://msdn.microsoft.com/en-us/library/ms152529.aspx。
默认情况下,触发器会在复制期间触发,除非指定了“NOT FOR REPLICATION”。它们的工作方式与简单插入语句的工作方式相同。
事务复制和合并复制非常不同,但触发器在这两个选项中的行为相似。
有几个替代方案可以代替触发器。