sys.sp_cdc_add_job (Transact-SQL)

適用於:SQL Server

在目前資料庫中建立異動數據擷取清除或擷取作業。

Transact-SQL 語法慣例

語法

sys.sp_cdc_add_job [ @job_type = ] N'job_type'
    [ , [ @start_job = ] start_job ]
    [ , [ @maxtrans = ] max_trans ]
    [ , [ @maxscans = ] max_scans ]
    [ , [ @continuous = ] continuous ]
    [ , [ @pollinginterval = ] polling_interval ]
    [ , [ @retention ] = retention ]
    [ , [ @threshold ] = 'delete_threshold' ]
[ ; ]

引數

[ @job_type = ] N'job_type'

要新增的作業類型。 @job_type是 nvarchar(20),而且不能是 NULL。 有效輸入為 capturecleanup

[ @start_job = ] start_job

旗標,指出是否應該在新增作業之後立即啟動。 @start_job是,預設值為 1

[ @maxtrans ] = max_trans

每個掃描週期中要處理的交易數目上限。 @maxtrans是 int,預設值為 500。 如果指定,該值必須是正整數。

@maxtrans僅適用於擷取作業。

[ @maxscans ] = max_scans

要執行的掃描週期數目上限,以便從記錄檔擷取所有數據列。 @maxscans的預設值10int

@max_scan僅適用於擷取作業。

[ @continuous ] = 連續

指出擷取作業是要持續執行 (1),還是只執行一次 (0)。 @continuous是,預設值為 1

  • 當 @continuous1sp_cdc_scan作業會掃描記錄檔,並處理最多 (@maxtrans * @maxscans) 筆交易。 然後,它會等候@pollinginterval中指定的秒數,再開始下一次記錄掃描。

  • 當@continuous為 時,作業會執行最多@maxscans記錄掃描、在每次掃描期間處理最多@maxtrans筆交易,然後結束。0sp_cdc_scan

@continuous僅適用於擷取作業。

[ @pollinginterval ] = polling_interval

記錄掃描週期之間的秒數。 @pollinginterval是 bigint,預設值為 5

當 @continuous 設定1為 時,@pollinginterval僅適用於擷取作業。 如果指定,該值必須大於或等於 0 且小於 24 小時(最多 86399 秒)。 如果已指定 值 0 ,則記錄掃描之間沒有等候。

[ @retention ] = 保留期

變更數據列要保留在變更數據表中的分鐘數。 @retention預設為 4320 (72 小時) 最大值為 52494800 (100 年)。 如果指定,該值必須是正整數。

@retention僅適用於清除作業。

[ @threshold = ] 'delete_threshold'

清除時可以使用單一語句刪除的最大刪除項目數目。 @threshold是 bigint,預設值為 5000

傳回碼值

0 (成功)或 1 (失敗)。

結果集

無。

備註

當資料庫中的第一個數據表啟用異動數據擷取時,會使用預設值來建立清除作業。 當資料庫中的第一個數據表啟用異動數據擷取,而且資料庫沒有任何交易式發行集存在時,會使用預設值來建立擷取作業。 當交易式發行集存在時,事務歷史記錄讀取器會用來驅動擷取機制,而且不需要或允許個別的擷取作業。

由於預設會建立清除和擷取作業,因此只有在明確卸除且必須重新建立作業時,才需要此預存程式。

作業的名稱是 cdc.<database_name>_cleanupcdc.<database_name>_capture,其中 <database_name> 是目前資料庫的名稱。 如果已有相同名稱的作業存在,名稱會附加句號 (.) 後面接著唯一標識碼,例如: cdc.AdventureWorks_capture.A1ACBDED-13FC-428C-8302-10100EF74F52

若要檢視清除或擷取作業的目前組態,請使用 sp_cdc_help_jobs。 若要變更作業的組態,請使用 sp_cdc_change_job

權限

需要 db_owner 固定資料庫角色中的成員資格。

範例

A. 建立擷取作業

下列範例會建立擷取作業。 此範例假設已明確卸除現有的清除作業,而且必須重新建立。 作業是使用預設值建立的。

USE AdventureWorks2022;
GO
EXEC sys.sp_cdc_add_job @job_type = N'capture';
GO

B. 建立清除作業

下列範例會在 AdventureWorks2022 資料庫中建立清除作業。 參數 @start_job 設定為 0@retention 設定為 5760 分鐘(96 小時)。 此範例假設已明確卸除現有的清除作業,而且必須重新建立。

USE AdventureWorks2022;
GO

EXEC sys.sp_cdc_add_job
    @job_type = N'cleanup',
    @start_job = 0,
    @retention = 5760;