共用方式為


sys.sp_cdc_add_job (Transact-SQL)

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

主題連結圖示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>_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 AdventureWorks2008R2;
GO
EXEC sys.sp_cdc_add_job @job_type = N'capture';
GO

B. 建立清除作業

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

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