1

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

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

4

1 回答 1

1

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

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

是每个分发代理允许的连接数,以将批量更改并行应用到订阅服务器,同时保持使用单个线程时存在的许多事务特征。对于 SQL Server Publisher,支持从 1 到 64 的值范围。仅当 Publisher 和 Distributor 在 SQL Server 2005 或更高版本上运行时,才支持此参数。对于非 SQL Server 订阅者或对等订阅,此参数不受支持或必须为 0。

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

于 2011-01-27T23:49:15.217 回答