3

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

我已阅读默认更改日志保留 3 天,然后由 sys.sp_cdc_cleanup_change_table 存储过程删除。

有谁知道我可以如何更改此默认值,以便我可以将日志保留更长时间。

谢谢

4

2 回答 2

3

您需要更新数据库的 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
    j
set
    [retention] = 3679200 -- 7 years
from
    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>为您的数据库名称。

于 2012-05-30T17:25:03.517 回答
2

两种替代解决方案:

  1. 放弃清理工作:

    EXEC sys.sp_cdc_drop_job @job_type = N'cleanup';
    
  2. 通过 sp 更改作业:

    EXEC sys.sp_cdc_change_job 
    @job_type = N'cleanup',
    @retention = 2880;
    

保留时间以分钟为单位,最长 52494800(100 年)。但是,如果你放弃这份工作,数据永远不会被清理,即使有数据需要清理,这份工作甚至也不会查找。如果想无限期地保留数据,我宁愿放弃这份工作。

于 2012-08-01T10:47:47.103 回答