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

时间:2012-05-30 16:58:18

标签: sql-server-2008 tsql

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

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

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

由于

2 个答案:

答案 0 :(得分: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>替换为您的数据库名称。

答案 1 :(得分: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;
    
  3. 保留时间(分钟),最长52494800(100年)。但是,如果你放弃了工作,数据永远不会被清除,如果有数据需要清理,工作甚至看不到。如果想要无限期地保存数据,我宁愿放弃这份工作。