SQL Server复制未决事务

我遇到了事务复制的问题。 我在我的服务器中有发布服务器,另一台服务器上有一个订阅者。

在我的服务器,如果我去订阅的细节,我可以看到,有1未分配的命令,但如果我执行'exec sp_repltrans'没有结果…,这是可能的,或者我有一个错误? 这台服务器最近崩溃了,我不知道当服务器崩溃时复制是否复制数据。

我尝试在表中进行一些更改,以查看未分配的命令计数器会发生什么情况,并随着更改(显示2个命令)而增加,在复制中需要比平时更长的时间(在立即复制之前),但最后还是反向返回到1。

有没有其他的方式来获得待处理的交易?

– 编辑1 –

感谢布兰登,结果很有意思,用sp_browsereplcmds我find了挂起的命令。

有趣的是,挂起的命令与我上次的testing更改相对应,如果我对表进行了另一次更改以查看发生了什么,我又有2个未分配的命令,并且在过去几分钟之后,将其复制到订户,新的最后一个命令保存在未分配的命令中。

打开发布者的每个窗口并查找更多信息,我在“队列阅读器代理程序”中发现了以下错误: 复制代理程序在10分钟内未logging进度消息。 这可能表示无响应的代理或高系统活动。 validation是否正在将logging复制到目标,并且与订阅服务器,发布服务器和分发服务器的连接仍处于活动状态。

  • 订阅者可能是问题,而不是发行者?
  • 最后一件事情(复制代理在10分钟内没有logging进度信息…)成为我用1未分配命令所遇到的问题的一部分?

sp_repltrans返回发布事务日志中标记为复制但尚未标记为分布式的事务。 基本上,sp_repltrans显示尚未移动到分发数据库的事务。 这与“复制监视器”中的“ 未分配命令”选项卡不同,后者显示有关分发数据库中尚未传送到选定订阅服务器的命令的信息。

使用sp_browsereplcmds来定位未分配的命令。