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

Eed*_*doh 13 database sql-server logging change-data-capture

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

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

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

Eed*_*doh 28

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

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

sp_cdc_change_job @job_type='cleanup', @retention=minutes
Run Code Online (Sandbox Code Playgroud)

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

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

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


mag*_*tic 6

如果要无限期保留CDC数据,只需禁用CDC清理作业:

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

以下是查找选项的示例图片:

如何禁用CDC清理

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

  • 我的猜测:停止它直到下一个服务器重启,禁用永久停止它. (2认同)
  • @Mark13426 - “停止作业”停止当前正在运行的作业。它将保持启用状态,并在下一个计划时间再次运行。“禁用”将阻止作业表单在下一个计划时间运行。如果当前正在运行的作业被禁用,当前运行将继续(当然,除非您还对其使用“停止作业”:-))。 (2认同)

小智 5

默认情况下,它会删除超过 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
Run Code Online (Sandbox Code Playgroud)