徵兆

套用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 範圍。 接著,當追蹤清理執行變更時,它會嘗試將 BIGINT 值插入此表格的 INT 資料行。 這會產生「症狀」一節中所描述的錯誤。

解決方案

此問題已修正下列累積更新SQL Server:

2017 年 SQL Server累積更新 27

每個新的累積更新SQL Server包含上一個累加更新中包含的所有 hotfix 和所有安全性修正。 查看最新累積更新,SQL Server:

2017 年 SQL Server累積更新

點播 Hotfix 資訊:

此問題已修正下列適用于 SQL Server:

因應措施 

如果您遇到此問題,請卸載 2016 SP3 或 SQL Server 2017 CU26,SQL Server上一個版本。 Microsoft 正在積極調查此問題,並將于提供相關資訊時,以詳細資訊和其他指南更新本文。

狀態

Microsoft 已確認<適用於>一節中所列的 Microsoft 產品確實有上述問題。

參考資料

瞭解 Microsoft 用來描述軟體更新的術語。

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×