适用范围: SQL Server

修改当前数据库中变更数据捕获清除或捕获作业的配置。 若要查看作业的当前配置,请查询 dbo.cdc_jobs 表或使用 sys.sp_cdc_help_jobs

Transact-SQL 语法约定

sys.sp_cdc_change_job [ [ @job_type = ] N'job_type' ]
    [ , [ @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),默认值为 capture. 有效输入为 capturecleanup

[ @maxtrans ] = max_trans

每个扫描循环中要处理的最大事务数。 @maxtrans为 int,默认值NULL表示此参数没有更改。 如果指定值,则该值必须是一个正整数。

@max_trans仅适用于捕获作业。

[ @maxscans ] = max_scans

为了从日志中提取所有行而要执行的最大扫描循环次数。 @maxscans为 int,默认值NULL表示此参数没有更改。

@max_scan仅适用于捕获作业。

[ @continuous ] = 连续

指示捕获作业是连续运行(1还是只运行一次)。0 @continuous,默认值 NULL为 ,表示此参数没有更改。

  • 当@continuous1sys.sp_cdc_scan作业将扫描日志并处理多达 (@maxtrans * @maxscans) 个事务。 然后,它会等待@pollinginterval中指定的秒数,然后再开始下一次日志扫描。

  • @continuous0,作业 sp_cdc_scan 最多 执行@maxscans 日志扫描,在每次扫描期间最多处理 @maxtrans 事务,然后退出。

  • 如果@continuous更改为10@pollinginterval自动设置为0。 为除忽略以外的0@pollinginterval指定的值。

  • 如果省略@continuous或显式设置为NULL且@pollinginterval显式设置为大于0的值,@continuous将自动设置为 1

    @continuous仅适用于捕获作业。

    [ @pollinginterval ] = polling_interval

    日志扫描周期之间的秒数。 @pollinginterval为 bigint,默认值NULL表示此参数没有更改。

    @pollinginterval仅在@continuous设置为1时对捕获作业有效。

    [ @retention ] = 保留期

    更改行将在更改表中保留的分钟数。 @retention为 bigint,默认值NULL表示此参数没有更改。 最大值为 52494800 (100 年)。 如果指定值,则该值必须是一个正整数。

    @retention仅适用于清理作业。

    [ @threshold = ] 'delete threshold'

    清理时可以使用单个语句删除的最大删除条目数。 @thresholdbigint,默认值 NULL表示此参数没有更改。 @threshold 仅适用于清理作业。

    返回代码值

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

    如果省略参数,则不会更新dbo.cdc_jobs表中的关联值。 显式 NULL 设置为被视为忽略参数的参数集。

    指定作业类型无效的参数会导致语句失败。

    在作业停止sys.sp_cdc_stop_job并使用 sys.sp_cdc_start_job重启作业之前,对作业所做的更改才会生效。

    要求具有 db_owner 固定数据库角色中的成员资格。

    A. 更改捕获作业

    以下示例更新数据库中捕获作业AdventureWorks2022的@job_type、@maxscans@maxtrans参数。 将省略捕获作业的其他有效参数( @continuous@pollinginterval);不会修改其值。

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

    B. 更改清理作业

    下例更新 AdventureWorks2022 数据库中的一个清除作业。 指定此作业类型的所有有效参数(@threshold除外)。 不会修改@threshold的值

    USE AdventureWorks2022;
    EXECUTE sys.sp_cdc_change_job
        @job_type = N'cleanup',
        @retention = 2880;
    
  • dbo.cdc_jobs (Transact-SQL)
  • sys.sp_cdc_enable_table (Transact-SQL)
  • sys.sp_cdc_add_job (Transact-SQL)
  •