如何为清理作业更改cdc保留值?

时间:2010-07-20 08:56:02

标签: sql-server database logging change-data-capture

我正在asp.net mvc2应用程序上实现日志记录功能,它使用SqlServer2008作为数据库,实体框架作为数据模型。

我启用了SqlServer的CDC功能,它的日志记录变化很好,但我注意到一些旧的日志数据被删除了。

有谁知道CDC保留记录的默认时间段,并且有人知道如何将其设置为无限期值。

3 个答案:

答案 0 :(得分:28)

我刚刚发现默认保留值为4320分钟= 72小时= 3天。

应该可以使用

进行配置
sp_cdc_change_job @job_type='cleanup', @retention=minutes
  

最大值为52494800(100年)。如果指定,则该值必须为正整数。保留仅对清理作业有效。

这是sp_cdc_change_job过程的link to the more detail explanation

希望这也会帮助别人:D。

答案 1 :(得分:6)

如果您想无限期地保留CDC数据,您可以disable the CDC cleanup job

  1. 打开SQL Server Management Studio并连接到数据库服务器
  2. 在对象资源管理器中,展开“< instance> | SQL Server代理|作业”
  3. 找到名为“cdc。< database name> _cleanup”的清理工作。
  4. 右键单击该作业,然后选择“禁用”
  5. 以下是查找选项的示例图片:

    How to disable CDC Cleanup

    禁用清理作业后,CDC数据将在一定时间间隔后不再被删除。

答案 2 :(得分:1)

默认情况下,它会删除3天之前的任何内容,使用以下脚本将默认值更改为14天

use <Your database>
go

SELECT ([retention])/((60*24)) AS Default_Retention_days ,*
FROM msdb.dbo.cdc_jobs
go

EXEC <Your database>.sys.sp_cdc_change_job 
@job_type=N'Cleanup'
,@retention=20160 -- <60 min *24 hrs * 14 days >
go

SELECT ([retention])/((60*24)) AS Default_Retention_days ,*
FROM msdb.dbo.cdc_jobs
Go