2012-05-30 4 views
3

SQL Server 2008 데이터베이스의 일부 테이블에서 CDC를 사용하도록 설정했습니다. 변경 기록을 유지할 수있는 일 수를 변경하고 싶습니다.T-SQL 변경 데이터 캡처 로그 정리

나는 기본적으로 변경 로그가 sys.sp_cdc_cleanup_change_table stored proc에 의해 삭제되기 전에 3 일 동안 유지된다는 것을 읽었습니다.

누구든지이 기본값을 변경할 수있는 방법을 알고 있으므로 로그를 오래 보관할 수 있습니다.

감사합니다.

답변

3

데이터베이스의 cdc_jobs.retention 필드를 업데이트해야합니다. cdc_jobs 테이블의 레코드는 하나 이상의 테이블에서 CDC를 사용할 수있을 때까지 존재하지 않습니다.

-- modify msdb.dbo.cdc_jobs.retention value (in minutes) to be the length of time to keep change-tracked data 
update 
    j 
set 
    [retention] = 3679200 -- 7 years 
from 
    sys.databases d 
inner join 
    msdb.dbo.cdc_jobs j 
     on j.database_id = d.database_id 
     and j.job_type = 'cleanup' 
     and d.name = '<Database Name, sysname, DatabaseName>'; 

<Database Name, sysname, DatabaseName>을 데이터베이스 이름으로 바꿉니다.

+1

감사합니다. 내가 찾은 또 다른 방법은 다음 명령을 실행하는 것이 었습니다. exec sp_cdc_change_job @ job_type = '정리', @ retention = minutes – gunnerz

2

두 가지 다른 솔루션 :

  1. 드롭 정리 작업 :

    EXEC sys.sp_cdc_drop_job @job_type = N'cleanup'; 
    
  2. SP 변경을 통해 작업 : 분

    EXEC sys.sp_cdc_change_job 
    @job_type = N'cleanup', 
    @retention = 2880; 
    

체류 시간, 최대 52494800 (100 년). 그러나 작업을 중단하면 데이터가 정리되지 않으며 정리할 데이터가있는 경우에도 작업이 보이지 않습니다. 데이터를 무기한 보관하려는 경우 작업을 취소하는 것이 좋습니다.