我们遇到了 CDC 的问题,其中捕获作业失败并且不会自行重新启动。它是在 DEV 环境中,所以没有伤害,但有没有人看到这些错误或知道 CDC 到底出了什么问题?
SQL 2014 EE 12.0.5540 - 带有 SSISDB 的 2 节点 AG
过程或函数 sp_batchinsert_1663605265 指定的参数过多。更多信息查询 sys.dm_cdc_errors 动态管理视图
日志扫描进程未能从日志序列号 (LSN) {00002d0d:0000f11f:0002} 构造复制命令。备份发布数据库并联系客户支持服务。了解更多信息
日志扫描进程在处理日志记录时失败。请参阅当前会话中的先前错误以确定原因并纠正任何相关问题。更多信息查询 sys.dm_cdc_errors 动态管理视图
我们尝试使用sp_cdc_drop_job
abd删除并重新创建捕获作业sp_cdc_add_job
。我们还尝试故障转移到另一个节点以及服务器/服务重新启动。似乎没有什么能让 CDC 自行重启。
我们在周五通过 AG 滚动补丁应用了 CU4,因此我们处于最新和最好的状态。这个问题是在我们修补并故障转移后立即出现的。
增加日志查询结果
看起来 CU2+SP4 (12.0.5540) 改变了生成的底层 _CT 系统表的结构。它添加了列
[__$command_id] int null
。当您升级到新的 CU 时,捕获作业将开始失败或进入“重试之间...”,并出现以下错误:
删除并重新创建捕获作业不起作用(使用 cdc_add_job)。我不得不删除捕获代理 CDC 作业,禁用表上的 CDC (sp_cdc_disable_table),然后重新启用 CDC (sp_cdc_enable_table),这会重新添加作业并成功触发作业并开始收集。
问题是,在删除并重新启用 CDC 时,您会丢失以前存在的 _CT 表及其所有数据。
我发现的关于 CU4 更改 CDC 的唯一信息是来自 MS 的以下信息:https: //support.microsoft.com/en-us/help/3030352
它说他们修复了排序问题,但没有列出对 CDC 系统表的任何结构更改。
更新 1:关于这个问题,我已经与 MS 建立了付费支持案例。还有一个为它打开的连接项:https ://connect.microsoft.com/SQLServer/Feedback/Details/3130381
更新 2:对于每个 MS,
sp_vupgrade_replication
在修补到 CU4 后使用命令将允许捕获代理作业成功启动。它仍然没有解决在命令运行之前失败的作业。它也没有解决这个没有在任何地方记录的添加列。还在等着看最后的判决是什么。更新 3:MS 已正式发布到他们的博客并认为这是一个问题: https ://blogs.msdn.microsoft.com/sql_server_team/cdc-functionality-may-break-after-upgrading-to-the-latest-cu -for-sql-server-2012-2014-and-2016/
目前还没有关于他们是否会重新发布 CU4 补丁以不需要人工干预来重新启动 CDC 作业或正式记录列更改的消息。