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

前端 未结 3 1064
野的像风
野的像风 2021-02-13 10:46

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 S

相关标签:
3条回答
  • 2021-02-13 10:50

    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.

    0 讨论(0)
  • 2021-02-13 11:06

    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:

    How to disable CDC Cleanup

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

    0 讨论(0)
  • 2021-02-13 11:14

    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
    
    0 讨论(0)
提交回复
热议问题