sys.sp_cdc_cleanup_change_table (Transact-SQL)

Удаляет строки из таблицы изменений текущей базы данных, основываясь на заданном значении параметра low_water_mark. Данная хранимая процедура используется для прямого управления процессом очистки таблицы изменений. Данную процедуру необходимо использовать с большой осторожностью, так как ее выполнение затрагивает всех потребителей данных таблицы изменений.

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

sys.sp_cdc_cleanup_change_table 
  [ @capture_instance = ] 'capture_instance', 
  [ @low_water_mark = ] low_water_mark ,
  [ @threshold = ]'delete threshold'

Аргументы

  • [ @capture_instance = ] 'capture_instance'
    Имя экземпляра отслеживания, связанного с таблицей изменений. Аргумент capture_instance имеет тип sysname и не может иметь значение NULL.

    Параметр capture_instance должен содержать имя экземпляра системы отслеживания, который содержится в текущей базе данных.

  • [ @low_water_mark = ] low_water_mark
    Регистрационный номер транзакции в журнале (номер LSN), который должен использоваться в качестве новой нижней конечной точки для capture instance. low_water_mark имеет тип binary(10), значения по умолчанию нет.

    Если значение является не нулевым, оно должно отображаться в качестве значения start_lsn текущей записи в таблице cdc.lsn_time_mapping. Если в таблице cdc.lsn_time_mapping есть несколько записей, соответствующих одному моменту времени, на который ссылается указатель новой нижней конечной точки, то данному указателю присваивается наименьшее значение номера LSN данной группы записей.

    Если значение NULL присвоено явным образом, то текущее значение low watermark для параметра capture instance используется для определения верхней границы операции очистки.

  • [ @threshold = ] 'delete threshold'
    Максимальное число записей, подлежащих удалению, которые можно удалить с использованием одной инструкции при очистке. delete_threshold принадлежит к типу bigint со значением по умолчанию, равным 5000.

Значения кодов возврата

0 (успешное завершение) или 1 (неуспешное завершение)

Результирующие наборы

Нет

Замечания

Процедура sys.sp_cdc_cleanup_change_table производит следующие операции.

  1. Если значение параметра @low_water_mark отлично от NULL, то процедура присваивает значение start_lsn для параметра capture instance новому параметру low watermark.

    ПримечаниеПримечание

    Новая нижняя конечная точка может не являться точкой, указанной в вызове хранимой процедуры. Если в таблице cdc.lsn_time_mapping есть несколько записей, соответствующих одному моменту времени, то в качестве нижней конечной точки выбирается наименьшее значение start_lsn в группе записей. Если значением параметра @low_water_mark является NULL или текущая нижняя конечная точка имеет большее значение, чем новая, то значение start_lsn для экземпляра системы отслеживания оставляется без изменения.

  2. Записи таблицы изменений, значения __$start_lsn которых меньше нижней конечной точки, удаляются. Пороговое значение удаления используется для ограничения количества строк, удаляемых в одной транзакции. Неуспешное удаление записей сопровождается выводом сообщения, но не влияет на изменения нижней конечной точки экземпляра системы отслеживания, которая могла быть создана при вызове.

Пользуйтесь процедурой sys.sp_cdc_cleanup_change_table в следующих случаях.

  • Задание агента очистки сообщает о неудачном удалении.

    Администратор может запустить данную хранимую процедуру явным образом, чтобы повторно выполнить эту операцию. Чтобы повторить очистку для данного экземпляра системы отслеживания, выполните процедуру sys.sp_cdc_cleanup_change_table, указав значение NULL в качестве параметра @low_water_mark.

  • Простая политика на основе срока хранения, используемая заданием агента очистки, не является оптимальной.

    Поскольку эта хранимая процедура выполняет очистку для одного экземпляра системы отслеживания, то она может быть использована для построения пользовательской стратегии очистки, которая применяет правила очистки к индивидуальному экземпляру системы отслеживания.

Разрешения

Требуется членство в предопределенной роли базы данных db_owner.