4

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

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

我应该使用事务复制还是合并复制,还是有关系?

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

4

4 回答 4

4

MSDN 上的CREATE TRIGGER 语法

CREATE TRIGGER
...
[ NOT FOR REPLICATION ] 

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

于 2009-02-12T17:35:58.240 回答
4

这要看情况。

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

另一方面,如果您希望合并表格内容(即订单表格),并在两个站点都放置订单,那么您可能需要考虑使用合并复制。

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

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

干杯,约翰

于 2009-02-12T17:38:44.503 回答
2

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

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

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

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

于 2009-02-16T05:36:23.570 回答
0

有几个替代选项可供您使用,而不是触发器。

  1. 您可以修改订户(目标)数据库上的复制过程。
  2. 如果使用 2008,您可以在订阅服务器上为您想要“做某事”的表使用更改跟踪,然后创建一个批处理来处理“基于集合”的数据而不是单个行。例如,运行每个 X 的 SSIS 包。
于 2009-02-16T09:44:34.693 回答