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


sys.fn_cdc_get_min_lsn

Возвращает значение столбца start_lsn для указанного экземпляра отслеживания из системной таблицы cdc.change_tables. Это значение представляет нижнюю конечную точку интервала допустимости для экземпляра отслеживания.

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

Синтаксис

sys.fn_cdc_get_min_lsn ( 'capture_instance_name' )

Аргументы

  • 'capture_instance_name'
    Имя экземпляра отслеживания. Параметр capture_instance_name имеет тип sysname.

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

binary(10)

Замечания

Возвращает значение 0x00000000000000000000, если экземпляр отслеживания не существует или если участник не авторизован для доступа к данным изменений, связанным с этим экземпляром отслеживания.

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

Разрешения

Требуется членство в предопределенной роли сервера sysadmin или в предопределенной роли базы данных db_owner. Всем остальным пользователям необходимо разрешение SELECT для всех отслеживаемых столбцов в исходной таблице. Кроме того, если для экземпляра отслеживания была определена шлюзовая роль, требуется членство в этой роли базы данных.

Примеры

A. Возвращение минимального значения номера LSN для заданного экземпляра отслеживания

Следующий пример возвращает минимальное значение номера LSN для экземпляра отслеживания HumanResources_Employee в базе данных AdventureWorks.

USE AdventureWorks;
GO
SELECT sys.fn_cdc_get_min_lsn ('HumanResources_Employee')AS min_lsn;

B. Проверка нижней конечной точки диапазона запроса

Следующий пример использует минимальное значение номера LSN, возвращенное функцией sys.fn_cdc_get_min_lsn для проверки того, является ли предложенная нижняя конечная точка запроса данных изменений действительной для текущей временной шкалы экземпляра отслеживания HumanResources_Employee. В примере предполагается, что предыдущая верхняя точка номера LSN для экземпляра отслеживания была сохранена и является доступной для установки переменной @save\_to\_lsn. Для этого примера переменной @save\_to\_lsn присвоено значение 0x000000000000000000, чтобы принудительно запустить раздел обработки ошибок.

USE AdventureWorks;
GO
DECLARE @min_lsn binary(10), @from_lsn binary(10),@save_to_lsn binary(10), @to_lsn binary(10);
-- Sets @save_to_lsn to the previous high endpoint saved from the last change data request.
SET @save_to_lsn = 0x000000000000000000;
-- Sets the upper endpoint for the query range to the current maximum LSN.
SET @to_lsn = sys.fn_cdc_get_max_lsn();
-- Sets the @min_lsn parameter to the current minimum LSN for the capture instance.
SET @min_lsn = sys.fn_cdc_get_min_lsn ('HumanResources_Employee');
-- Sets the low endpoint for the query range to the LSN that follows the previous high endpoint.
SET @from_lsn = sys.fn_cdc_increment_lsn(@save_to_lsn);
-- Tests to verify the low endpoint is valid for the current capture instance.
IF (@from_lsn < @min_lsn)
    BEGIN
        RAISERROR('Low endpoint of the request interval is invalid.', 16, -1);
    END
ELSE
-- Return the changes occurring within the query range.
    SELECT * FROM cdc.fn_cdc_get_all_changes_HumanResources_Employee(@from_lsn, @to_lsn, 'all');
GO

См. также

Справочник

Основные понятия