Share via


sys.sp_cdc_change_job (Transact-SQL)

修改目前資料庫中異動資料擷取清除或擷取作業的組態。若要檢視某項作業的目前組態,請查詢 dbo.cdc_jobs 資料表,或使用 sp_cdc_help_jobs

主題連結圖示Transact-SQL 語法慣例

語法

sys.sp_cdc_change_job [ [ @job_type = ] 'job_type' ]
        [ , [ @maxtrans = ] max_trans ] 
    [ , [ @maxscans = ] max_scans ] 
        [ , [ @continuous = ] continuous ] 
    [ , [ @pollinginterval = ] polling_interval ] 
    [ , [ @retention ] = retention ] 
        [ @threshold = ] 'delete threshold'

引數

  • [ @job_type= ] 'job_type'
    要修改的作業類型。job_type 是 nvarchar(20),預設值為 'capture'。有效的輸入是 'capture' 和 'cleanup'。

  • [ @maxtrans ] **=**max_trans
    每個掃描循環中要處理的交易數目上限。max_trans 是 int,預設值為 NULL,代表此參數沒有異動。如果已指定,該值必須是正整數。

    max_trans 僅適用於擷取作業。

  • [ @maxscans ] **=**max_scans
    要執行以便從記錄中擷取所有資料列的掃描循環數目上限。max_scans 是 int,預設值為 NULL,代表此參數沒有異動。

    max_scan 僅適用於擷取作業。

  • [ @continuous ] **=**continuous
    指出擷取作業是連續執行 (1),還是僅執行一次 (0)。continuous 是 bit,預設值為 NULL,代表此參數沒有異動。

    當 continuous = 1 時,sp_cdc_scan 作業就會掃描記錄並且最多處理 (max_trans * max_scans) 筆交易。接著,它會先等候 polling_interval 中指定的秒數,然後再開始下一次記錄掃描作業。

    當 continuous = 0 時,sp_cdc_scan 作業最多會執行 max_scans 次記錄掃描作業,而且在每次掃描時最多處理 max_trans 筆交易,然後便結束。

    如果 @continuous 從 1 變更為 0,@pollinginterval 就會自動設定為 0。如果針對 @pollinginterval 指定 0 以外的值,系統會忽略此值。

    如果 @continuous 被省略或明確設定為 NULL,而且 @pollinginterval 明確設定為大於 0 的值,@continuous 就會自動設定為 1。

    continuous 僅適用於擷取作業。

  • [ @pollinginterval ] **=**polling_interval
    記錄掃描循環之間的秒數。polling_interval 是 bigint,預設值為 NULL,代表此參數沒有異動。

    當 continuous 設定為 1 時,polling_interval 僅適用於擷取作業。

  • [ @retention ] **=**retention
    變更資料列要保留在變更資料表中的分鐘數。retention 是 bigint,預設值為 NULL,代表此參數沒有異動。最大值為 52494800 (100 年)。如果已指定,該值必須是正整數。

    retention 僅適用於清除作業。

  • [ @threshold= ] 'delete threshold'
    可以使用單一清除陳述式來刪除的最大刪除項目數。delete threshold 是 bigint,預設值為 NULL,代表此參數沒有異動。delete threshold 只對清除作業有效。

傳回碼值

0 (成功) 或 1 (失敗)

結果集

備註

如果省略某個參數,就不會更新 dbo.cdc_jobs 資料表中的關聯值。明確設定為 NULL 的參數會被視為省略的參數。

指定對作業類型無效的參數將導致此陳述式失敗。

對某項作業所做的變更要等到您使用 sp_cdc_stop_job 停止該作業並使用 sp_cdc_start_job 重新啟動作業時,變更才會生效。

權限

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

範例

A. 變更擷取作業

下列範例會更新 AdventureWorks2008R2 資料庫中擷取作業的 @job_type、@maxscans@maxtrans 參數。擷取作業其他有效的參數 (@continuous 和 @pollinginterval) 被省略,而且其值不會進行修改。

USE AdventureWorks2008R2;
GO
EXECUTE sys.sp_cdc_change_job 
    @job_type = N'capture',
    @maxscans = 1000,
    @maxtrans = 15;
GO

B. 變更清除作業

下列範例會在 AdventureWorks2008R2 資料庫中更新清除作業。系統會指定這個作業類型的所有有效參數 (除了 @threshold 之外)。@threshold 的值不會修改。

USE AdventureWorks2008R2;
GO
EXECUTE sys.sp_cdc_change_job 
    @job_type = N'cleanup',
    @retention = 2880;
GO