共用方式為


異動資料擷取和其他 SQL Server 功能

此主題描述下列功能如何與異動資料擷取互動:

  • 變更追蹤

  • 資料庫鏡像

  • 交易式複寫

  • 資料庫還原或附加

變更追蹤

您可以在同一個資料庫上啟用異動資料擷取和變更追蹤。不需要進行任何特殊考量。如需詳細資訊,請參閱<變更追蹤>。

資料庫鏡像

啟用異動資料擷取的資料庫可以進行鏡像。若要確保擷取和清除會自動在鏡像上進行,請遵循下列步驟:

  1. 確定 SQL Server Agent 正在鏡像上執行。

  2. 當主體已經容錯移轉至鏡像之後,在鏡像上建立擷取作業和清除作業。若要建立這些作業,請使用預存程序 sys.sp_cdc_add_job (Transact-SQL)

如需有關資料庫鏡像的詳細資訊,請參閱<資料庫鏡像>。

交易式複寫

雖然異動資料擷取和交易式複寫可以同時存在同一個資料庫中,但是同時啟用這兩項功能時,系統會以不同的方式處理變更資料表的擴展。異動資料擷取和交易式複寫一定會使用相同的程序 sp_replcmds,從交易記錄中讀取變更。單獨啟用異動資料擷取時,SQL Server Agent 作業就會呼叫 sp_replcmds。如需詳細資訊,請參閱<擷取作業>。在同一個資料庫上同時啟用這兩項功能時,記錄讀取器代理程式就會呼叫 sp_replcmds。這個代理程式會同時擴展變更資料表和散發資料庫資料表。如需詳細資訊,請參閱<複寫記錄讀取器代理程式>。

假設您在 AdventureWorks 資料庫上啟用了異動資料擷取,而且有兩份資料表啟用了擷取。為了擴展變更資料表,擷取作業會呼叫 sp_replcmds。資料庫啟用了交易式複寫,而且建立了發行集。此時,系統會針對資料庫建立記錄讀取器代理程式並且刪除擷取作業。記錄讀取器代理程式會繼續掃描記錄,從變更資料表所認可的最後一個記錄序號開始。如此可確保變更資料表中的資料保持一致。如果這個資料庫停用了交易式複寫,系統就會移除記錄讀取器代理程式並且重新建立擷取作業。

[!附註]

當記錄讀取器代理程式同時用於異動資料擷取和交易式複寫時,複寫的變更會先寫入散發資料庫。然後,擷取的變更才會寫入變更資料表。這兩項作業會一起認可。如果寫入散發資料庫時發生延遲,系統會建立對應的延遲,然後變更才會出現在變更資料表中。

還原或附加啟用異動資料擷取的資料庫

SQL Server 會使用下列邏輯來判斷在還原或附加資料庫之後,異動資料擷取是否會維持啟用狀態:

  • 如果資料庫還原至具有相同資料庫名稱的相同伺服器,異動資料擷取就會維持啟用狀態。

  • 如果資料庫還原至其他伺服器,預設會停用異動資料擷取並且刪除所有相關的中繼資料。

    若要保留異動資料擷取,請在還原資料庫時使用 KEEP_CDC 選項。如需有關這個選項的詳細資訊,請參閱<RESTORE>。

  • 如果資料庫卸離並附加至相同伺服器或其他伺服器,異動資料擷取就會維持啟用狀態。

  • 如果您使用 KEEP_CDC 選項,將資料庫附加或還原至 Enterprise 以外的任何版本,此作業就會遭封鎖,因為異動資料擷取需要 SQL Server Enterprise。此時會顯示錯誤訊息 932:

    SQL Server cannot load database '%.*ls' because change data capture is enabled. The currently installed edition of SQL Server does not support change data capture. Either disable change data capture in the database by using a supported edition of SQL Server, or upgrade the instance to one that supports change data capture.

您可以使用 sys.sp_cdc_disable_db,從還原或附加的資料庫中移除異動資料擷取。

請參閱

其他資源