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


sys.fn_cdc_get_min_lsn (Transact-SQL)

Область применения: SQL Server

Возвращает значение столбца 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 для всех отслеживаемых столбцов в исходной таблице. Кроме того, если для экземпляра отслеживания была определена шлюзовая роль, требуется членство в этой роли базы данных.

Примеры

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

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

USE AdventureWorks2-12;  
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 AdventureWorks2022;  
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  

См. также

sys.fn_cdc_get_max_lsn (Transact-SQL)
Журнал транзакций (SQL Server)