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,指示未更改此参数。

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

  • [ @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. 更改捕获作业

下例更新 AdventureWorks 数据库中某个捕获作业的 @job\_type、@maxscans@maxtrans 参数。省略了捕获作业的其他有效参数(@continuous 和 @pollinginterval);未修改它们的值。

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

B. 更改清除作业

下例更新 AdventureWorks 数据库中的一个清除作业。该示例指定了此作业类型的所有有效参数,@threshold 除外。未修改 @threshold 的值。

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