Как значение сохранения cdc может быть изменено для работы по очистке?
Я реализую функцию ведения журнала в приложении asp.net mvc2, которое использует SqlServer2008 в качестве базы данных и Entity Framework в качестве модели данных.
Я включил функцию CDC в SqlServer и хорошо зарегистрировал изменения, но я просто заметил, что некоторые старые данные протоколирования стираются.
Кто-нибудь знает, какой период по умолчанию CDC ведет записи, и кто-нибудь знает, как я могу установить его на неопределенное значение.
Ответы
Ответ 1
Я только что обнаружил, что значение сохранения по умолчанию составляет 4320 минут = 72 часа = 3 дня.
Его следует настроить с помощью
sp_cdc_change_job @job_type='cleanup', @retention=minutes
Максимальное значение - 52494800 (100 лет). Если указано, значение должно быть положительным целым числом. Сохранение действует только для заданий очистки.
Здесь ссылка на более подробное объяснение процедуры sp_cdc_change_job
Надеюсь, это тоже поможет кому-то другому: D.
Ответ 2
Если вы хотите сохранить данные CDC неограниченно, вы можете просто отключить работу по очистке CDC:
- Откройте SQL Server Management Studio и подключитесь к серверу базы данных.
- В проводнике объектов разверните "<instance> | Агент SQL Server | Jobs"
- Найдите работу для очистки с именем "cdc. < database name > _cleanup".
- Щелкните правой кнопкой мыши задание и выберите "отключить"
Вот пример изображения, где можно найти опцию:
![How to disable CDC Cleanup]()
После отключения задания очистки данные CDC больше не будут удаляться через определенный промежуток времени.