我在我的 SQL Server 2008 数据库中的几个表上启用了 CDC。我想更改可以保留更改历史记录的天数。
我已阅读默认更改日志保留 3 天,然后由 sys.sp_cdc_cleanup_change_table 存储过程删除。
有谁知道我可以如何更改此默认值,以便我可以将日志保留更长时间。
谢谢
我在我的 SQL Server 2008 数据库中的几个表上启用了 CDC。我想更改可以保留更改历史记录的天数。
我已阅读默认更改日志保留 3 天,然后由 sys.sp_cdc_cleanup_change_table 存储过程删除。
有谁知道我可以如何更改此默认值,以便我可以将日志保留更长时间。
谢谢
您需要更新数据库的 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>
为您的数据库名称。
两种替代解决方案:
放弃清理工作:
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 年)。但是,如果你放弃这份工作,数据永远不会被清理,即使有数据需要清理,这份工作甚至也不会查找。如果想无限期地保留数据,我宁愿放弃这份工作。