sys.sp_cdc_add_job (Transact-SQL)

适用于:SQL Server (所有受支持的版本)

在当前数据库中创建变更数据捕获清理或捕获作业。

主题链接图标Transact-SQL 语法约定

语法

  
sys.sp_cdc_add_job [ @job_type = ] 'job_type'  
    [ , [ @start_job = ] start_job ]   
    [ , [ @maxtrans = ] max_trans ]   
    [ , [ @maxscans = ] max_scans ]   
    [ , [ @continuous = ] continuous ]   
    [ , [ @pollinginterval = ] polling_interval ]   
    [ , [ @retention ] = retention ]   
    [ , [ @threshold ] = 'delete_threshold' ]  

参数

[ @job_type = ] 'job\_type' 要添加的作业的类型。 job_type为 nvarchar (20) ,不能为 NULL。 有效输入为“capture”“cleanup”。

[ @start_job = ] start_job 指示在添加作业后是否应立即启动该作业的标志。 start_job ,默认值为 1。

[ @maxtrans ] = max_trans 每个扫描周期中要处理的事务数上限。 max_trans 为默认值为 500 的 int 。 如果指定值,则该值必须是一个正整数。

max_trans 仅适用于捕获作业。

[ @maxscans ] = max\_scans_ 要执行的最大扫描周期数,以便从日志中提取所有行。 默认 为 10 的 int max_scans。

max_scan 仅适用于捕获作业。

[ @continuous ] = continuous_ 指示捕获作业是连续运行 (1) ,还是仅运行一次 (0) 。 连续 ,默认值为 1。

当连续 = 1 时,sp_cdc_scan作业将扫描日志并处理多达 (max_trans * max_scans) 事务。 然后,它会等待 polling_interval 中指定的秒数,然后再开始下一次日志扫描。

连续 = 0 时, sp_cdc_scan 作业执行最多 max_scans 日志扫描,在每次扫描期间处理最多 max_trans 事务,然后退出。

连续 仅适用于捕获作业。

[ @pollinginterval ] = polling\_interval_ 日志扫描周期之间的秒数。 polling_interval默认为 5。

仅当连续设置为 1 时,polling_interval才对捕获作业有效。 如果指定,该值必须大于或等于 0 且小于 24 小时, (最大值:86399 秒) 。 如果指定的值为 0,则不会在两次日志扫描之间等待。

[ @retention ] = retention_ 更改数据行在更改表中保留的分钟数。 保留期为 4320 (72 小时) 。 最大值为 52494800(100 年)。 如果指定值,则该值必须是一个正整数。

保留 仅适用于清理作业。

[ @threshold = ] 'delete\_threshold' 清除时可以使用单个语句删除的最大删除条目数。 delete_threshold大数 ,默认值为 5000。

返回代码值

0 (成功) 或 1 (失败)

结果集

备注

当对数据库中的第一个表启用了变更数据捕获时,会使用默认值创建一个清理作业。 当对数据库中的第一个表启用了变更数据捕获并且该数据库不存在事务发布时,会使用默认值创建一个捕获作业。 如果存在事务发布,则可使用事务日志读取器来驱动捕获机制,此时既不需要也不允许独立的捕获作业。

因为清理和捕获作业是默认创建的,所以仅当显式删除某个作业并且必须重新创建它时才需要使用此存储过程。

作业的名称为 cdc。<>database_name_cleanupcdc。<>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 AdventureWorks2012;  
GO  
EXEC sys.sp_cdc_add_job @job_type = N'capture';  
GO  

B. 创建清理作业

以下示例在 AdventureWorks2019 数据库中创建清理作业。 参数 @start_job 设置为 0,@retention 设置为 5760 分钟(96 小时)。 本例假定已显式删除了现有清理作业并且必须重新创建它。

USE AdventureWorks2012;  
GO  
EXEC sys.sp_cdc_add_job  
     @job_type = N'cleanup'  
    ,@start_job = 0  
    ,@retention = 5760;  

另请参阅

dbo.cdc_jobs (Transact-SQL)
sys.sp_cdc_enable_table (Transact-SQL)
关于变更数据捕获 (SQL Server)