sys.fn_cdc_increment_lsn (Transact-SQL)

Возвращает следующий регистрационный номер транзакции в журнале (LSN) в последовательности относительно указанного номера.

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

Синтаксис

sys.fn_cdc_increment_lsn ( lsn_value )

Аргументы

  • lsn_value
    Значение номера LSN. Параметр lsn_value имеет тип binary(10).

Тип возвращаемых данных

binary(10)

Замечания

Номер LSN, возвращаемый функцией, всегда больше заданного значения. Между указанными двумя значениями не может быть промежуточных номеров LSN.

Для систематического отображения информации об изменениях данных с течением времени можно периодически вызывать функцию запроса, каждый раз указывая новые значения границ интервала. Чтобы исключить потерю данных, необходимо в качестве нижней границы последующего запроса использовать верхнюю границу предыдущего запроса. Так как интервал запроса является замкнутым, то новое значение нижней границы должно быть больше, чем значение верхней границы предыдущего запроса. Однако необходимо убедиться, что разница между указанными значениями границ достаточно мала и не включает номеров LSN каких-либо изменений. Для получения этого значения используется функция sys.fn_cdc_increment_lsn.

Разрешения

Требует членства в роли базы данных public.

Примеры

В следующем примере новое значение нижней границы интервала системы отслеживания измененных данных формируется с помощью функции sys.fn_cdc_increment_lsn. При этом используется значение верхней границы предыдущего запроса, а результат записывается в переменную @save_to_lsn.

USE AdventureWorks2008R2;
GO
DECLARE @from_lsn binary(10), @to_lsn binary(10), @save_to_lsn binary(10);
SET @save_to_lsn = <previous_upper_bound_value>;
SET @from_lsn = sys.fn_cdc_increment_lsn(@save_to_lsn);
SET @to_lsn = sys.fn_cdc_get_max_lsn();
SELECT * from cdc.fn_cdc_get_all_changes_HumanResources_Employee( @from_lsn, @to_lsn, 'all' );
GO