Как значение сохранения 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 больше не будут удаляться через определенный промежуток времени.