我在 asp.net mvc2 应用程序上实现了一个日志记录功能,它使用 SqlServer2008 作为数据库,使用实体框架作为数据模型。
我启用了 SqlServer 的 CDC 功能,它很好地记录了更改,但我只是注意到一些旧的日志记录数据被删除了。
有谁知道 CDC 保留记录的默认期限是多少,有谁知道我如何将其设置为无限期值。
我在 asp.net mvc2 应用程序上实现了一个日志记录功能,它使用 SqlServer2008 作为数据库,使用实体框架作为数据模型。
我启用了 SqlServer 的 CDC 功能,它很好地记录了更改,但我只是注意到一些旧的日志记录数据被删除了。
有谁知道 CDC 保留记录的默认期限是多少,有谁知道我如何将其设置为无限期值。
我刚刚发现默认保留值是 4320 分钟 = 72 小时 = 3 天。
它应该可以通过使用来配置
sp_cdc_change_job @job_type='cleanup', @retention=minutes
最大值为 52494800(100 年)。如果指定,该值必须是正整数。保留仅对清理作业有效。
这是 sp_cdc_change_job 过程的更详细说明的链接
希望这对其他人也有帮助:D。
如果您想无限期地保留 CDC 数据,您可以简单地禁用 CDC 清理作业:
这是在哪里可以找到该选项的示例图片:
禁用清理作业后,CDC 数据将不再在特定时间间隔后被删除。
默认情况下,它会删除任何超过 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