sys.fn_cdc_get_min_lsn(Transact-SQL)

적용 대상:SQL Server

cdc.change_tables 시스템 테이블에서 지정된 캡처 인스턴스 에 대한 start_lsn 열 값을 반환합니다. 이 값은 캡처 인스턴스에 대한 유효 간격의 낮은 엔드포인트를 나타냅니다.

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 값 반환

다음 예제에서는 AdventureWorks2022 데이터베이스의 캡처 인스턴스 HumanResources_Employee 에 대한 최소 LSN 값을 반환합니다.

USE AdventureWorks2-12;  
GO  
SELECT sys.fn_cdc_get_min_lsn ('HumanResources_Employee')AS min_lsn;  
  

B. 쿼리 범위의 하위 엔드포인트 확인

다음 예제에서는 반환된 sys.fn_cdc_get_min_lsn 최소 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)