How the cdc retention value can be changed for the cleanup job?

て烟熏妆下的殇ゞ 提交于 2019-12-21 07:45:04

问题


I'm implementing a logging feature on a asp.net mvc2 application, that uses SqlServer2008 as a database and Entity Framework as a data model.

I enabled CDC feature of SqlServer and it's logging changes well, but I just noticed that some of the old logging data is erased.

Does anyone know what's default period CDC keeps records, and does anyone know how could I set it to indefinite value.


回答1:


I just discovered that the default retention value is 4320 minutes = 72 hours = 3 days.

It should be configurable by using

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

The maximum value is 52494800 (100 years). If specified, the value must be a positive integer. Retention is valid only for cleanup jobs.

Here's the link to the more detail explanation of sp_cdc_change_job procedure

Hope this will help someone else, too :D.




回答2:


If you want to retain the CDC data indefinitly, you can simply disable the CDC cleanup job:

  1. Open SQL Server Management Studio and connect to your database server
  2. In the object explorer, expand “<instance> | SQL Server Agent | Jobs”
  3. Find the job for cleanup named “cdc.<database name>_cleanup”.
  4. Right-click the job and select "disable"

Here is a sample picture of where to find the option:

After you disabled the cleanup job, the CDC data will no longer get removed after a certain time interval.




回答3:


By default it deletes anything older than 3 days, to change the default value to 14 days use the following script

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


来源:https://stackoverflow.com/questions/3288391/how-the-cdc-retention-value-can-be-changed-for-the-cleanup-job

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!