共用方式為


清除作業

本節提供有關異動資料擷取清除作業如何運作的資訊。

清除作業的結構

異動資料擷取會使用保留性清除策略來管理變更資料表大小。此清除機制包含啟用第一個資料庫資料表時建立的 SQL Server Agent Transact-SQL 作業。單一清除作業會處理所有資料庫變更資料表的清除,並且將相同的保留值套用至所有定義的擷取執行個體。

清除作業是透過執行無參數的預存程序 sp_MScdc_cleanup_job 起始的。這個預存程序一開始會從 msdb.dbo.cdc_jobs 中擷取清除作業的設定保留和臨界值。此保留值會用來計算變更資料表的新下限標準。從 cdc.lsn_time_mapping 資料表的最大 tran_end_time 值中減去指定的分鐘數,以便取得表示成日期時間值的新下限標準。然後,使用 CDC.lsn_time_mapping 資料表來將這個日期時間值轉換成對應的 lsn 值。如果資料表中的多個項目共用相同的認可時間,就會選擇對應至具有最小 lsn 之項目的 lsn 成為新的下限標準。這個 lsn 值會傳遞給 sp_cdc_cleanup_change_tables,以便從資料庫變更資料表中移除變更資料表項目。

[!附註]

使用最近交易之認可時間當做計算新下限標準之基礎的優點在於,它會在指定的時間內讓變更保留在變更資料表中。即使擷取處理序正在後方執行,也會發生這種情況。具有相同認可時間當做目前下限標準的所有項目會透過選擇具有實際下限標準之共用認可時間的最小 lsn,繼續在變更資料表內部表示。

執行清除時,所有擷取執行個體的下限標準一開始是在單一交易中更新。然後,它會嘗試從變更資料表和 cdc.lsn_time_mapping 資料表中移除已過時的項目。可設定的臨界值會限制在任何單一陳述式中刪除的項目數。如果無法針對任何個別的資料表執行刪除,將無法防止針對其餘資料表嘗試進行此作業。

清除作業自訂

對於清除作業而言,自訂的可能性在於用來決定哪些變更資料表項目要捨棄的策略。在傳遞的清除作業中,唯一支援的策略是以時間為基礎的策略。在該情況下,新下限標準的計算方式是從上次處理之交易的認可時間中減去允許的保留週期。由於基礎清除程序是以 lsn 而非時間為基礎,所以您可以使用任何數目的策略來決定要保留在變更資料表中的最小 lsn。其中只有某些策略是嚴格地以時間為基礎。例如,如果需要存取變更資料表的下游處理序無法執行,用戶端的相關知識就可用來提供保全。此外,雖然預設策略會套用相同的 lsn 來清除所有資料庫的變更資料表,但是您也可以呼叫基礎清除程序,以便在擷取執行個體層級進行清除。

請參閱

概念