CDC 擷取作業會在處理具有系統 CLR 數據類型 (geometry、geography 或 hierarchyid 數據表的變更時失敗)
本文可協助您解決當您處理具有系統 CLR 數據類型 (geometry、geography 或 hierarchyid) 之數據表的變更時,CDC 擷取作業失敗的問題。
適用于:SQL Server
原始 KB 編號: 4538384
徵狀
請試想下列案例:
- 您可以在具有系統 CLR 數據類型的數據表上啟用異動數據擷取 (CDC) 功能,例如 geometry、geography 或 hierarchyid。
- CDC 擷取 (掃描) 作業正在處理與其他數據表相關的變更。 此程式尚未到達具有系統 CLR 數據類型的數據表。
- 您可以在具有系統 CLR 資料類型的數據表上進行一些數據操作語言 (DML) 變更。 然後,您會在同一個數據表上進行數據定義語言 (DDL) 變更 (例如,新增數據行) 。
在此案例中,當 CDC 擷取作業開始處理具有系統 CLR 數據類型的數據表時,它會失敗並傳回下列錯誤訊息:
Msg 18805, Level 16, State 1, Procedure sp_replcmds, LineLineNumber[Batch Start Line LineNumber ]
Log-Scan 進程無法從記錄序號 (LSN) {nnnnnnn: nnnnnnnn: nnnn} 建構複寫的命令。 備份發行集資料庫,並連絡客戶支持服務。
Msg 22859, Level 16, State 2, Procedure sp_replcmds, LineNumber [Batch Start Line LineNumber ]
記錄檔掃描程式在處理記錄檔記錄時失敗。 請參閱目前會話中的先前錯誤,以找出原因並更正任何相關聯的問題。
Msg 3621, Level 16, State 6, Procedure sp_replcmds, LineNumber [Batch Start Line LineNumber ]
陳述式已終止。
Msg 22864, Level 16, State 1, Procedure sp_MScdc_capture_job, Line LineNumber[Batch Start Line LineNumber ]
資料庫 『DatabaseName』 的擷取作業sp_MScdc_capture_job呼叫失敗。 查看先前的錯誤,找出失敗的原因。
此外,下列專案可能會記錄在錯誤記錄檔中:
錯誤:913,嚴重性:16,狀態:16。 找不到資料庫IDID。 資料庫可能尚未啟用,或可能正在轉換中。 資料庫可用后,請重新發出查詢。 如果您不認為此錯誤是因為資料庫正在轉換其狀態,而此錯誤會繼續發生。
其他相關資訊
如果 CDC 擷取作業一開始只處理 DML,然後在下次執行時處理 DDL 變更,就不會發生此問題。
因應措施
若要解決此問題,請嘗試下列其中一種方法:
避免將有問題的數據類型 (geometry、geography、hierarchyid) 與 CDC 搭配使用。
當您在具有 geometry、geography 或 hierarchyid 數據類型的數據表上進行 DDL 變更時,請確定您沒有任何 Inflight DML 變更。 若要避免此問題,請遵循下列步驟:
- 停止數據表的所有 DML。
- 執行擷取作業來處理變更。
- 執行數據表的 DDL。
- 執行擷取作業來處理 DDL 變更。
- 重新啟用 DML 處理。
注意事項
如果您繼續遇到此問題,請停用 ,然後在數據表上重新啟用 CDC。