T-SQL变更数据捕获日志清理

3 人关注

我已经在我的SQL server 2008数据库中的几个表上启用了CDC。我想改变我可以保留更改历史的天数。

我读到,默认情况下,变更日志在被sys.sp_cdc_cleanup_change_table存储程序删除之前会被保留3天。

有谁知道我怎样才能改变这个默认值,从而使我能够保留更长时间的日志。

sql-server-2008
tsql
gunnerz
gunnerz
发布于 2012-05-31
2 个回答
ulty4life
ulty4life
发布于 2012-09-28
已采纳
0 人赞同

你需要为你的数据库更新 cdc_jobs.retention 字段。在至少有一个表为 CDC 启用之前,cdc_jobs 表中的记录不会存在。

-- modify msdb.dbo.cdc_jobs.retention value (in minutes) to be the length of time to keep change-tracked data
update
    [retention] = 3679200 -- 7 years
    sys.databases d
inner join
    msdb.dbo.cdc_jobs j
        on j.database_id = d.database_id
        and j.job_type = 'cleanup'
and d.name = '<Database Name, sysname, DatabaseName>';

用你的数据库名称替换<Database Name, sysname, DatabaseName>

谢谢。我发现的另一个方法是运行以下命令:exec sp_cdc_change_job @job_type='cleanup', @retention=minutes
Olaf
Olaf
发布于 2012-09-28
0 人赞同

两个可供选择的解决方案。

  • 放下清理工作。

    EXEC sys.sp_cdc_drop_job @job_type = N'cleanup';
    
  • 通过sp改变工作。

    EXEC sys.sp_cdc_change_job 
    
  •