Как изменить значение сохранения cdc для задания очистки? - PullRequest
13 голосов
/ 20 июля 2010

Я реализую функцию ведения журналов в приложении asp.net mvc2, которое использует SqlServer2008 в качестве базы данных и Entity Framework в качестве модели данных.

Я включил функцию CDC в SqlServer, и она хорошо меняется,но я только что заметил, что некоторые старые данные журналирования стерты.

Кто-нибудь знает, какой период по умолчанию хранит записи CDC, и знает ли кто-нибудь, как я могу установить его на неопределенное значение.

Ответы [ 3 ]

28 голосов
/ 20 июля 2010

Я только что обнаружил, что значение по умолчанию составляет 4320 минут = 72 часа = 3 дня.

Его следует настраивать с помощью

sp_cdc_change_job @job_type='cleanup', @retention=minutes

Максимальное значение 52494800(100 лет).Если указано, значение должно быть положительным целым числом.Хранение действительно только для заданий очистки.

Вот ссылка на более подробное объяснение процедуры sp_cdc_change_job

Надеюсь, это поможет и кому-то еще: D.

6 голосов
/ 31 марта 2014

Если вы хотите хранить данные CDC неопределенно, вы можете просто отключить задание очистки CDC :

  1. Открыть SQL Server Management Studio и подключиться к серверу базы данных
  2. В проводнике объектов разверните « |Агент SQL Server |Рабочие места »
  3. Найдите работу по очистке с именем« cdc._cleanup ».
  4. Щелкните правой кнопкой мыши на задании и выберите« отключить »

Вот пример изображения, где можно найти параметр:

How to disable CDC Cleanup

После отключения задания очистки данные CDC больше не будут удаляться через определенный промежуток времени.

1 голос
/ 02 октября 2018

По умолчанию он удаляет все, что старше 3 дней, чтобы изменить значение по умолчанию на 14 дней, используйте следующий скрипт

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
...