Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 复制时的SQL Server触发器_Sql Server_Sql Server 2008_Triggers_Replication - Fatal编程技术网

Sql server 复制时的SQL Server触发器

Sql server 复制时的SQL Server触发器,sql-server,sql-server-2008,triggers,replication,Sql Server,Sql Server 2008,Triggers,Replication,我需要创建一个SQL Server数据库,该数据库将通过某种复制机制从另一个数据库接收更新。我需要编写insert、update和delete触发器,这些触发器将在发生此复制时执行 我有触发器方面的经验,但没有复制方面的经验 我应该使用事务复制还是合并复制,还是这很重要 当执行简单SQL insert语句时,设计为运行的触发器是否也会在复制发生时运行? 这表明在复制时执行是触发器的默认行为,可以通过指定不用于复制来禁用该行为 如果要应用的更新是针对独立表的,即给定表的所有数据仅来自发布服务器,则

我需要创建一个SQL Server数据库,该数据库将通过某种复制机制从另一个数据库接收更新。我需要编写insert、update和delete触发器,这些触发器将在发生此复制时执行

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

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

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

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

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

另一方面,如果您希望将表内容(即orders表)与两个站点上的订单合并,则您需要考虑使用合并复制

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


干杯,约翰

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

下面是一篇关于MSDN的文章,应该会有所帮助:

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


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

您可以选择一些替代触发器的选项

  • 您可以修改订阅服务器(目标)数据库上的复制过程
  • 如果使用2008,您可以对订阅服务器上要“处理”的表使用更改跟踪,然后创建一个批处理过程来处理“基于集合”的数据,而不是虚拟行。例如,每X运行一次的SSIS包

  • 复制是双向的,还是单向的?涉及多少SQL Server实例?两个方向,但如果需要,我可以用其他方式处理我这边的更改。
    CREATE TRIGGER
    ...
    [ NOT FOR REPLICATION ]