sys.sp_cdc_change_job (Transact-SQL)
修改当前数据库中变更数据捕获清除或捕获作业的配置。 若要查看作业的当前配置,请查询 dbo.cdc_jobs 表,或者使用 sp_cdc_help_jobs。
语法
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.更改捕获作业
下例更新 AdventureWorks2012 数据库中某个捕获作业的 @job\_type、@maxscans 和 @maxtrans 参数。 省略了捕获作业的其他有效参数(@continuous 和 @pollinginterval);未修改它们的值。
USE AdventureWorks2012;
GO
EXECUTE sys.sp_cdc_change_job
@job_type = N'capture',
@maxscans = 1000,
@maxtrans = 15;
GO
B.更改清除作业
下例更新 AdventureWorks2012 数据库中的一个清除作业。 该示例指定了此作业类型的所有有效参数,@threshold 除外。 未修改 @threshold 的值。
USE AdventureWorks2012;
GO
EXECUTE sys.sp_cdc_change_job
@job_type = N'cleanup',
@retention = 2880;
GO