使用 Microsoft 登录
登录或创建帐户。
你好,
使用其他帐户。
你有多个帐户
选择要登录的帐户。

症状

应用SQL Server 2016 Service Pack 3 (SP3)SQL Server 2017 累积更新 26 (CU26)后,运行更改跟踪清理存储过程sp_flush_commit_table_on_demandsp_flush_CT_internal_table_on_demand,或者如果运行更改跟踪自动清理,将收到以下错误消息:

Msg 8114, Level 16, State 1, Procedure sp_add_ct_history, Line LineNumber

Error converting data type numeric to int.

此外,可能会将以下错误记录到SQL Server日志中:

DateTime spidNum     Error: 22122, Severity: 16, State: 1.

DateTime spidNum     Change Tracking autocleanup failed on side table of "table_name". If the failure persists, use sp_flush_CT_internal_table_on_demand to clean up expired records from its side table.

遇到此错误后,更改跟踪自动清理无法清理侧表或 syscommittab 表中的条目。

原因

SQL Server 2016 SP3 和 SQL Server 2017 CU26 引入了新表dbo。MSchange_tracking_history, 和新的存储过程sys.sp_add_ct_history,用于记录更改跟踪清理的历史记录。 此表有一个列cleanup_version,它当前声明为 INT 数据类型。 存储sys.sp_add_ct_history 包含参数 @cleanup_version ,该参数也声明为 INT。 在使用更改跟踪的繁忙系统中,清理版本可以跨给定时间间隔的 INT 范围。 然后,当更改跟踪清理运行时,它会尝试在此表的 INT 列中插入 BIGINT 值。 这会生成"症状"部分中所述的错误。

解决方法

此问题已针对以下更新的累积更新SQL Server:

2017 年 SQL Server 日累积更新 27

每个新的累积更新SQL Server包含上一个累积更新中包含的所有修补程序和所有安全修补程序。 查看最新累积更新,了解SQL Server:

SQL Server 2017 的最新累计更新

按需修补程序信息:

以下按需修补程序中修复了此问题,SQL Server:

解决方法

如果遇到此问题,请通过卸载 2016 SP3 或 SQL Server 2017 CU26 SQL Server上一版本。 Microsoft 正在积极调查此问题,当该信息可用时,它将使用更多信息和其他指南更新本文。

状态

Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。

参考

了解 Microsoft 用于 描述软件更新的术语。

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?
按“提交”即表示你的反馈将用于改进 Microsoft 产品和服务。 你的 IT 管理员将能够收集此数据。 隐私声明。

谢谢您的反馈!

×