Поделиться через


sys.sp_cdc_cleanup_change_table (Transact-SQL)

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

Применимо для следующих объектов: SQL Server (начиная с SQL Server 2008 до текущей версии).

Значок ссылки на раздел Cинтаксические обозначения в 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.

См. также

Справочник

cdc.fn_cdc_get_all_changes_<capture_instance> (Transact-SQL)

sys.fn_cdc_get_min_lsn (Transact-SQL)

sys.fn_cdc_increment_lsn (Transact-SQL)