症状
请考虑以下情况:
-
可以使用 sp_cdc_cleanup_change_table 管理更改表清理过程。
-
调用更改数据捕获时,CDC (扫描) CDC 清理 sp_cdc_cleanup_change_table死锁 。
在此方案中,会发生以下错误 22852,严重性为 10 (信息) 消息:
无法删除通过更改一个或多个低水位线使数据库数据库的捕获实例过时而<DatabaseName>。 执行 CommandName 命令时<失败> 。 返回的错误<ErrorInfo> 。
使用 操作和错误来确定失败的原因并重新提交请求。
备注 由于这是一条信息性消息,因此清理过程不会失败,并且无法确定清理是成功还是失败。
有关修补程序的详细信息
若要确定使用 sp_cdc_cleanup_change_table 时清理是成功还是失败, (fCleanupFailed 位) 添加到 sp_cdc_cleanup_change_table 函数。 这可用于检查任何捕获实例的清理是否失败。 如果 fCleanupFailed 输出 为 0,则所有清理操作都成功。 如果为 1,则至少一个捕获实例的清理会失败。 下面是一个示例:
-- 先声明变量,将 设置为零
select @cleanup_failed_bit = 0
--Execute cleanup and obtain output bit
EXEC @retcode =sys.sp_cdc_cleanup_change_table
@capture_instance = '<CaptureInstance>',
@low_water_mark = @LSN,
@threshold = 1 ,
@fCleanupFailed = @cleanup_failed_bit output
--Leverage @cleanup_failed_bit output to check the status.
解决方法
此问题已针对以下更新的累积更新SQL Server:
每个新的累积更新SQL Server包含上一个内部版本提供的所有修补程序和安全修补程序。 建议为版本安装最新版本的 SQL Server:
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。
参考
了解 Microsoft 用于 描述软件更新的术语。