更改捕获表(CDC-CT)更新已暂停数小时

时间:2018-01-16 20:22:41

标签: sql-server sql-server-2008 change-data-capture

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

版本:SQL Server 11.0.5613

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

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

exec sys.sp_cdc_help_jobs

enter image description here

此处的maxtrans是指每个扫描周期正在处理的事务数。 (从500增加到1000)。它与正在处理的log_records的数量不同。如果查看tran_count列,它是“sys.dm_cdc_log_scan_sessions”表中正在处理的事务数,您将看到它始终低于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

enter image description here

从这个分析来看,这个工作看起来好像4个小时都没有做任何事情,或者四个小时无关(这似乎不太可能)。然后处理所有更新,直到那个时间,然后停止4个小时。 唯一与此相符的是事务日志备份作业的频率,该作业在凌晨12:00至晚上11:59之间每4小时运行一次。我不确定他们是否有某种关联。我试图改变工作的频率,看看影响。它没有。

任何指针都可能有很大的帮助。

1 个答案:

答案 0 :(得分:1)

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