sys.sp_cdc_add_job (Transact-SQL)
適用於:SQL Server
在目前資料庫中建立異動數據擷取清除或擷取作業。
語法
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
。 有效輸入為 capture
和 cleanup
。
[ @start_job = ] start_job
旗標,指出是否應該在新增作業之後立即啟動。 @start_job是位,預設值為 1
。
[ @maxtrans ] = max_trans
每個掃描週期中要處理的交易數目上限。 @maxtrans是 int,預設值為 500
。 如果指定,該值必須是正整數。
@maxtrans僅適用於擷取作業。
[ @maxscans ] = max_scans
要執行的掃描週期數目上限,以便從記錄檔擷取所有數據列。 @maxscans的預設值10
為int。
@max_scan僅適用於擷取作業。
[ @continuous ] = 連續
指出擷取作業是要持續執行 (1
),還是只執行一次 (0
)。 @continuous是位,預設值為 1
。
當 @continuous 為
1
時,sys.sp_cdc_scan作業會掃描記錄檔,並處理最多 (@maxtrans * @maxscans
) 筆交易。 然後,它會等候@pollinginterval中指定的秒數,再開始下一次記錄掃描。當@continuous為 時,作業會執行最多@maxscans記錄掃描、在每次掃描期間處理最多@maxtrans筆交易,然後結束。
0
sp_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>_cleanup
或 cdc.<database_name>_capture
,其中 <database_name>
是目前資料庫的名稱。 如果已有相同名稱的作業存在,名稱會附加句號 (.
) 後面接著唯一標識碼,例如: cdc.AdventureWorks_capture.A1ACBDED-13FC-428C-8302-10100EF74F52
。
若要檢視清除或擷取作業的目前組態,請使用 sys.sp_cdc_help_jobs。 若要變更作業的組態,請使用 sys.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;