我在SQL Server 2008数据库中的几个表上启用了CDC。我想更改我可以保留更改历史记录的天数。
我已经读过,默认情况下,更改日志会在被sys.sp_cdc_cleanup_change_table存储过程删除之前保留3天。
有谁知道如何更改此默认值,以便我可以将日志保留更长时间。
由于
答案 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)
两种替代解决方案:
删除清理工作:
EXEC sys.sp_cdc_drop_job @job_type = N'cleanup';
通过sp:
更改作业EXEC sys.sp_cdc_change_job
@job_type = N'cleanup',
@retention = 2880;
保留时间(分钟),最长52494800(100年)。但是,如果你放弃了工作,数据永远不会被清除,如果有数据需要清理,工作甚至看不到。如果想要无限期地保存数据,我宁愿放弃这份工作。