17

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

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

有谁知道 CDC 保留记录的默认期限是多少,有谁知道我如何将其设置为无限期值。

4

3 回答 3

33

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

它应该可以通过使用来配置

sp_cdc_change_job @job_type='cleanup', @retention=minutes

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

这是 sp_cdc_change_job 过程的更详细说明的链接

希望这对其他人也有帮助:D。

于 2010-07-20T10:13:48.053 回答
10

如果您想无限期地保留 CDC 数据,您可以简单地禁用 CDC 清理作业

  1. 打开 SQL Server Management Studio 并连接到您的数据库服务器
  2. 在对象资源管理器中,展开“<instance> | SQL Server 代理 | 工作”</li>
  3. 找到名为“cdc.<数据库名称>_cleanup”的清理作业。
  4. 右键单击作业并选择“禁用”

这是在哪里可以找到该选项的示例图片:

如何禁用 CDC 清理

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

于 2014-03-31T14:29:09.640 回答
7

默认情况下,它会删除任何超过 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
于 2018-10-01T22:15:14.743 回答