更改捕获表 (CDC-CT) 更新停滞了几个小时

Change Capture Tables (CDC-CT) updates are stalled for hours

我的数据库启用了 CDC,更改捕获工作正常,直到两周前 CT tables 在 3 到 4 小时内仅更新一次。

版本:SQL服务器 11.0.5613

我尝试过的事情: 1.停止并重新启动捕获作业 2. 重新启动 SQL 服务器进程。 3. 尝试捕获延迟(发现更新在CT tables 中只在4 小时内批量填充一次) 4. 尝试将@maxtrans 增加到 1000,但这确实让系统赶上了。它仍然每 4 小时运行一次。

我根据以下输出做了一些研究:

exec sys.sp_cdc_help_jobs

这里的maxtrans是指每个扫描周期正在处理的事务数。 (从 500 增加到 1000)。它与正在处理的 log_records 个数不同。如果您查看 tran_count 列,即“sys.dm_cdc_log_scan_sessions”table 中正在处理的交易数量,您会发现它始终低于 500。(session_id = 0 显示 1052,因为它是一个特殊条目,表示自服务器于 1 月 7 日重新启动以来处理的所有事务的总数。) 所以我不确定是不是 maxtrans 的问题。

SELECT latency, empty_scan_count, * FROM sys.dm_cdc_log_scan_sessions order by end_time desc

根据此分析,该作业似乎在 4 小时内什么都不做,或者它在四个小时内什么都不做(这似乎不太可能)。然后处理所有更新直到那个时间,然后停顿 4 小时。 唯一与此一致的是事务日志备份作业的频率,它在 12:00 a.m 之间每 4 小时运行一次。和 11:59 p.m。我不确定它们是否以某种方式相关。我试着改变工作的频率,发现 impact.It 没有任何。

任何指点都会有很大帮助。

辅助节点已添加到可用性组。 此服务器已添加,但服务器上没有设置数据库。当记录写入主节点时,它会尝试将其传播到所有辅助节点。由于它无法成功执行此操作,因此日志从未被正式强化,这意味着 cdc 永远不会获取它。 Cdc 一直在等待事务完成,这就是为什么捕获作业没有完成,只是挂在那里的原因。当超时时,记录最终被记录到捕获中 table,但到那时,已经 4 小时了!