我在事务复制方面遇到了问题。我的服务器中有发布者,而另一台服务器中有订阅者。
在我的服务器中,如果我转到订阅的详细信息,我可以看到有 1 个未分发的命令,但如果我执行“exec sp_repltrans”,则没有结果...,这是可能的还是我遇到了错误?该服务器最近崩溃了,我不知道服务器崩溃时复制是否正在复制数据。
我尝试在表中进行一些更改,以查看未分发命令计数器发生的情况,并且它会随着变化而增加(显示 2 个命令),在复制时花费的时间比平时更长(然后立即复制),但最终计数器回到 1。
还有其他方法可以获取待处理的交易吗?
-- 编辑 1 --
谢谢 Brandon,这个结果很有趣,通过 sp_browsereplcmds 我找到了待处理的命令。
有趣的是,待处理的命令与我上次的测试更改相对应,如果我对表进行另一个更改以查看会发生什么,我会再次得到 2 个未分发的命令,并且当几分钟过去后,前一个命令会被复制到订阅者,而新的最后一个命令会保留在未分发的命令中。
打开发布者的每个窗口并查找更多信息,我在“队列阅读器代理”中发现了这个错误: 复制代理在 10 分钟内未记录进度消息。这可能表示代理无响应或系统活动过多。请验证记录是否已复制到目标,以及与订阅服务器、发布服务器和分发服务器的连接是否仍处于活动状态。
- 问题可能出在订阅者而非发布者身上吗?
- 这最后一件事(复制代理在 10 分钟内没有记录进度消息...)是我在使用 1 个未分发的命令时遇到的问题的一部分吗?
答案1
sp_repltrans返回发布事务日志中标记为复制但尚未标记为分布式的事务。基本上,sp_repltrans 显示尚未移动到分发数据库的事务。这与未分发的命令复制监视器中的选项卡,显示有关分发数据库中尚未传递给选定订阅者的命令的信息。
使用示例:找到未分发的命令。