2012-05-30 1 views
3

Я включил CDC в нескольких таблицах в базе данных SQL Server 2008. Я хочу изменить количество дней, в которые я могу сохранить историю изменений.T-SQL Изменить очистку журнала сбора данных

Я прочитал, что по умолчанию журналы изменений хранятся в течение 3 дней, прежде чем они будут удалены sys.sp_cdc_cleanup_change_table сохраненной процедурой.

Кто-нибудь знает, как я могу изменить это значение по умолчанию, чтобы я мог хранить журналы дольше.

Благодаря

ответ

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 = 'cleanup', @ retention = minutes – gunnerz

2

два альтернативных решения:

  1. падение зачистка работа:

    EXEC sys.sp_cdc_drop_job @job_type = N'cleanup'; 
    
  2. Изменить работу через зр:

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

Время удерживания в минутах, не более 52494800 (100 лет). Но если вы откажетесь от работы, данные никогда не будут очищены, работа даже не выглядит, если есть данные для очистки. В случае необходимости хранить данные на неопределенный срок, я бы предпочел отказаться от работы.

Смежные вопросы