sys.sp_cdc_add_job (Transact-SQL)
适用于:SQL Server
在当前数据库中创建变更数据捕获清理或捕获作业。
语法
sys.sp_cdc_add_job [ @job_type = ] N'job_type'
[ , [ @start_job = ] start_job ]
[ , [ @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) ,不能为 NULL。 有效输入为 capture
和 cleanup
。
[ @start_job = ] start_job
用于指示添加作业后是否立即启动该作业的标志。 @start_job 为 位 ,默认值为 1
。
[ @maxtrans ] = max_trans
每个扫描循环中要处理的最大事务数。 @maxtrans 为 int ,默认值为 500
。 如果指定值,则该值必须是一个正整数。
@maxtrans 仅适用于捕获作业。
[ @maxscans ] = max_scans
为了从日志中提取所有行而要执行的最大扫描循环次数。 @maxscans 为 int ,默认值为 10
。
@max_scan 仅适用于捕获作业。
[ @continuous ] = 连续
指示捕获作业是连续运行 () 1
,还是只运行一次 (0
) 。 @continuous 为 位 ,默认值为 1
。
当 @continuous 为
1
时,sp_cdc_scan作业会扫描日志,并处理最多 (@maxtrans * @maxscans
) 事务。 然后,它会等待 @pollinginterval 中指定的秒数,然后再开始下一次日志扫描。当 @continuous 为
0
时,sp_cdc_scan
作业将执行最多 @maxscans 次日志扫描,在每次扫描期间最多处理 @maxtrans 个事务,然后退出。
@continuous 仅适用于捕获作业。
[ @pollinginterval ] = polling_interval
日志扫描周期之间的秒数。 @pollinginterval 为 bigint ,默认值为 5
。
仅当 @continuous 设置为 1
时,@pollinginterval才对捕获作业有效。 如果指定,该值必须大于或等于 0
且小于 24 小时, (最多 86399 秒) 。 如果指定了 值 0
,则日志扫描之间不会等待。
[ @retention ] = 保留期
更改数据行要在更改表中保留的分钟数。 @retention很大,) 默认值为 4320
72 小时 (。 最大值为 52494800
(100 年) 。 如果指定值,则该值必须是一个正整数。
@retention 仅适用于清理作业。
[ @threshold = ] 'delete_threshold'
清理时可以使用单个语句删除的最大删除条目数。 @threshold 为 bigint ,默认值为 5000
。
返回代码值
0
(成功) 或 1
(失败) 。
结果集
无。
备注
当对数据库中的第一个表启用了变更数据捕获时,会使用默认值创建一个清理作业。 当对数据库中的第一个表启用了变更数据捕获并且该数据库不存在事务发布时,会使用默认值创建一个捕获作业。 存在事务发布时,将使用事务日志读取器来驱动捕获机制,并且不需要或不允许单独的捕获作业。
因为清理和捕获作业是默认创建的,所以仅当显式删除某个作业并且必须重新创建它时才需要使用此存储过程。
作业的名称为 cdc.<database_name>_cleanup
或 cdc.<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 AdventureWorks2022;
GO
EXEC sys.sp_cdc_add_job @job_type = N'capture';
GO
B. 创建清理作业
以下示例在 AdventureWorks2022 数据库中创建清理作业。 参数 @start_job 设置为 0
, @retention 设置为 5760 分钟 (96 小时) 。 本例假定已显式删除了现有清理作业并且必须重新创建它。
USE AdventureWorks2022;
GO
EXEC sys.sp_cdc_add_job
@job_type = N'cleanup',
@start_job = 0,
@retention = 5760;