徵兆
套用SQL Server 2016 Service Pack 3 (SP3)或SQL Server 2017 累積更新 26 (CU26)後,您執行追蹤清理儲存程式sp_flush_commit_table_on_demand或sp_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:
每個新的累積更新SQL Server包含上一個累加更新中包含的所有 hotfix 和所有安全性修正。 查看最新累積更新,SQL Server:
點播 Hotfix 資訊:
此問題已修正下列適用于 SQL Server:
因應措施
如果您遇到此問題,請卸載 2016 SP3 或 SQL Server 2017 CU26,SQL Server上一個版本。 Microsoft 正在積極調查此問題,並將于提供相關資訊時,以詳細資訊和其他指南更新本文。
狀態
Microsoft 已確認<適用於>一節中所列的 Microsoft 產品確實有上述問題。
參考資料
瞭解 Microsoft 用來描述軟體更新的術語。