SQL Server在复制时触发

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server在复制时触发相关的知识,希望对你有一定的参考价值。

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

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

我应该使用Transactional还是Merge复制,还是重要?

设计为在执行简单的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 REPLICATION”,否则将在复制期间触发触发器。它们的工作方式与简单的insert语句相同。

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

另一答案

除了触发器之外,还有一些替代选项可供您使用。

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

以上是关于SQL Server在复制时触发的主要内容,如果未能解决你的问题,请参考以下文章

使用实体框架迁移时 SQL Server 连接抛出异常 - 添加代码片段

如何在 SQL Server 触发器中复制插入、更新、删除的行

缺少 SQL SERVER 2014 代码片段

SQL Server——触发器

SQL Server 在插入时使用触发器删除行

Microsoft SQL Server 代码片段收集