sys.sp_cdc_add_job (Transact-SQL)
建立目前資料庫中的異動資料擷取清除或擷取作業。
語法
sys.sp_cdc_add_job [ @job_type = ] 'job_type'
[ , [ @start_job = ] start_job ]
[ , [ @maxtrans = ] max_trans ]
[ , [ @maxscans = ] max_scans ]
[ , [ @continuous = ] continuous ]
[ , [ @pollinginterval = ] polling_interval ]
[ , [ @retention ] = retention ]
[ , [ @threshold ] = 'delete_threshold' ]
引數
[ @job_type= ] 'job_type'
要加入的作業類型。job_type 是 nvarchar(20),而且不能是 NULL。有效的輸入是 'capture' 和 'cleanup'。[ @start_job= ] start_job
旗標,指出作業是否應該在加入之後立即啟動。start_job 是 bit,預設值為 1。[ @maxtrans ] = max_trans
每個掃描循環中要處理的交易數目上限。max_trans 是 int,預設值為 500。如果已指定,該值必須是正整數。max_trans 僅適用於擷取作業。
[ @maxscans ] **=**max_scans
要執行以便從記錄中擷取所有資料列的掃描循環數目上限。max_scans 是 int,預設值為 10。max_scan 僅適用於擷取作業。
[ @continuous ] **=**continuous
指出擷取作業是連續執行 (1),還是僅執行一次 (0)。continuous 是 bit,預設值為 1。當 continuous = 1 時,sp_cdc_scan 作業就會掃描記錄並且最多處理 (max_trans * max_scans) 筆交易。接著,它會先等候 polling_interval 中指定的秒數,然後再開始下一次記錄掃描作業。
當 continuous = 0 時,sp_cdc_scan 作業最多會執行 max_scans 次記錄掃描作業,而且在每次掃描時最多處理 max_trans 筆交易,然後便結束。
continuous 僅適用於擷取作業。
[ @pollinginterval ] **=**polling_interval
記錄掃描循環之間的秒數。polling_interval 是 bigint,預設值為 5。當 continuous 設定為 1 時,polling_interval 僅適用於擷取作業。若已指定,這個值不可能是負值,而且不可能超過 24 小時。若已指定 0 值,記錄檔掃描之間不會有等待時間。
[ @retention ] **=**retention
變更資料列要保留在變更資料表中的分鐘數。retention 是 bigint,預設值為 4320 (72 小時)。最大值為 52494800 (100 年)。如果已指定,該值必須是正整數。retention 僅適用於清除作業。
[ @threshold = ] 'delete_threshold'
可以使用單一清除陳述式來刪除的最大刪除項目數。delete_threshold 是 bigint,預設值為 5000。
傳回碼值
0 (成功) 或 1 (失敗)
結果集
無
備註
當資料庫中的第一份資料表啟用異動資料擷取時,系統就會使用預設值來建立清除作業。當資料庫中的第一份資料表啟用異動資料擷取,而且該資料庫不存在任何交易式發行集時,系統就會使用預設值來建立擷取作業。當交易式發行集存在時,交易式記錄讀取器就會用於驅動擷取機制,而且不需要也不允許使用個別的擷取作業。
由於系統預設會建立清除和擷取作業,因此只有在作業已經明確卸除而且必須重新建立時,這個預存程序才是必要項目。
作業的名稱是 cdc.<database_name>_cleanup 或 cdc.<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 AdventureWorks;
GO
EXEC sys.sp_cdc_add_job @job_type = N'capture';
GO
B. 建立清除作業
下列範例會在 AdventureWorks 資料庫中建立清除作業。參數 @start\_job 設定為 0 而且 @retention 設定為 5760 分鐘 (96 小時)。這則範例會假設現有的清除作業已明確卸除而且必須重新建立。
USE AdventureWorks;
GO
EXEC sys.sp_cdc_add_job
@job_type = N'cleanup'
,@start_job = 0
,@retention = 5760;