为什么在我的副本数据库看到插入之前会有延迟?

Agi*_*Jon 0 replication sql-server

我使用的是 SQL Server 2005 标准版。我有一个主数据库和一个配置了事务复制的只读副本。我的理解是,对于事务复制,“插入”语句直到

  1. 该行被插入到primary中,并且
  2. 该行已完全复制到副本数据库

但是,我在执行插入时遇到问题,它返回(我知道这是因为我使用的是身份 PK 列,并且我有我的 ID 值)。然后我在副本数据库上运行一个 SELECT 语句,在那里我尝试按 ID 查找行,但它尚不存在。如果我再等几秒钟,一切都很好。我对事务复制的理解是否关闭?有没有办法让它按照我的想法工作?

Pau*_*dal 5

你的理解是错误的。

事务复制在发布数据库上提交的事务和应用于订阅数据库的事务之间可能有很长的延迟。

首先,已提交事务的日志记录从发布数据库的事务日志中(通过日志读取器代理作业)获取并(基本上)放入分发数据库中。然后分发代理作业将更改从分发数据库推送或拉取到订阅数据库。

根据这 3 台机器上的工作负载(如果它们是分开的)以及它们之间的网络带宽,延迟可能是几秒、几分钟或更长时间。

您正在考虑同步数据库镜像 - 事务无法在主体上提交,直到它的所有日志记录都已在镜像数据库的日志驱动器上硬化。事务复制是一个异步过程,并且完全按照它应该的方式工作。

希望这可以帮助。