共用方式為


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 變更。 若要避免此問題,請遵循下列步驟:

    1. 停止數據表的所有 DML。
    2. 執行擷取作業來處理變更。
    3. 執行數據表的 DDL。
    4. 執行擷取作業來處理 DDL 變更。
    5. 重新啟用 DML 處理。

    注意事項

    如果您繼續遇到此問題,請停用 ,然後在數據表上重新啟用 CDC。