SQL 服务器事务复制会保证订阅者中的插入顺序吗

Will SQL Server transactional replication guarantee the insert order in subscriber

我们正在使用SQL Server 2008 并尝试使用事务复制来减轻对数据库的压力。但我们有一个顾虑,是否能保证发布者和订阅者的执行顺序相同?

例如,如果我们 运行 在发布者数据库中插入

insert into Table A
insert into Table B

这两个插入是否会在订阅者数据库中以相同的顺序执行

是的,如果两个表在同一个发布中,行将以相同的顺序插入。 Log reader 代理将按照写入的顺序从事务日志中读取数据并推送到分发数据库。 分发代理将从那里以相同的顺序读取命令并将其应用到订阅者数据库。

答案是肯定的。在事务复制中,Log Reader Agent 负责读取日志文件并将标记为复制的数据从发布数据库传输到分发数据库。为此,Log Reader Agent 扫描日志文件。记录 Reader 代理是一个连续的工作,它不可能跳过一些交易并将同一 table 的一些其他交易传输给分发者。

另一方面,复制分发代理将事务从分发服务器数据库传输到订阅服务器数据库。这也应该按照事务写入分发服务器的顺序发生,因为如果不是这种情况,则数据不一致。