sla*_*man 5 replication sql-server-2008 transaction-log transactional-replication
我试图让(拉)事务复制再次为订阅者工作。
目前,在复制监视器中,我在发布者到分发者选项卡和分发者到订阅者选项卡中看到消息。
在订阅者历史记录的分发者中,我看到“发布 'XX' 的并发快照不可用”。在发布者到分发者的历史记录中,我看到日志读取器代理正在初始化,然后等待服务器的响应(每 5 分钟再次记录一次消息)。
最终执行sp_replcmds
失败。
我认为可能有许多未复制的事务导致日志读取器代理挂起。遵循LogReader 超时故障排除
我跑了dbcc opentran
然后试图跑
select [Transaction ID], count([Transaction ID]) as 'Count log entries'
from::fn_dblog('42006:31381:2',null)
where [Description] = 'REPLICATE'
group by [Transaction ID]
Run Code Online (Sandbox Code Playgroud)
此查询在超过 40 分钟后未返回任何结果。此外,当我刚跑步SELECT count(*) FROM ::fn_dblog(NULL, NULL)
时,很长一段时间(20 分钟)后我都没有得到结果。
我开始认为我的事务日志的大小有问题,或者某种损坏,或者什么。
任何帮助将不胜感激。
小智 1
如果 fn_dblog 挂起,您可以尝试 ApexSQL、RedGate 或 Idera 的一些第三方工具。或者您可以尝试备份事务日志文件并使用 fn_dump_dblog 只是为了排除联机事务日志的问题。您可以在这篇DBA 帖子中找到更多信息