带有并发运行触发器的SQL事务复制

时间:2011-01-27 23:40:05

标签: sql sql-server database-replication transactional-replication

我已经为两个表(父记录和子记录)连续运行SQL Server事务复制。在订阅者端,我在两个复制表上都有插入和更新触发器。 这些触发器都具有相同的代码,用于查询复制表中的记录并修改订户数据库的其他表中的记录。

我的问题是......这些触发器会同时运行吗?我担心一个表中的触发器会中断另一个表中触发器完成的处理工作

1 个答案:

答案 0 :(得分:1)

触发器将在应用更新的复制代理的上下文中运行。代理使用可配置数量的connections

  

-SubscriptionStreams [0|1|2|...64]

     

每个分发代理允许的连接数是多少   并行应用批量更改   在维护的同时对订阅者   许多交易   使用a时存在的特征   单线程。对于SQL Server   发布者,从1到1的一系列值   支持64。这个参数是   仅在发布者和   分发服务器正在SQL Server上运行   2005或更高版本。这个参数   不支持或必须为0   非SQL Server订阅者或   点对点订阅。

由于复制代理正确维护了事务语义,因此如果您的更新具有正确的事务语义,那么它们就不会在订阅者上发生冲突(因为它们在发布者上没有冲突)。如果他们这样做,那么你的事务边界设计就会出现问题,你需要通过回到绘图板并用正确的事务语义设计你的应用程序来解决这个问题。