Share via


sys.fn_cdc_get_min_lsn (Transact-SQL)

Van toepassing op:SQL Server

Geeft de waarde van de start_lsn kolom terug voor de opgegeven capture-instantie uit de cdc.change_tables systeemtabel. Deze waarde vertegenwoordigt het lage eindpunt van het validiteitsinterval voor de capture-instantie.

Transact-SQL syntaxis-conventies

Syntaxis

  
sys.fn_cdc_get_min_lsn ( 'capture_instance_name' )  

Arguments

'capture_instance_name'
Is de naam van de capture-instantie. capture_instance_name is sysname.

Retourtypen

binary(10)

Opmerkingen

Geeft 0x00000000000000000000 terug wanneer de capture-instantie niet bestaat of wanneer de aanroeper niet gemachtigd is om toegang te krijgen tot de wijzigingsgegevens die aan de capture-instantie zijn gekoppeld.

Deze functie wordt doorgaans gebruikt om het lage eindpunt van de tijdlijn voor wijzigingsdata-opname te identificeren die bij een capture-instantie hoort. Je kunt deze functie ook gebruiken om te valideren dat de eindpunten van een querybereik binnen de capture instance tijdlijn vallen voordat je wijzigingsdata aanvraagt. Het is belangrijk om dergelijke controles uit te voeren omdat het lage eindpunt van een capture-instantie verandert wanneer er een cleanup wordt uitgevoerd op de wijzigingstabellen. Als de tijd tussen de verzoeken voor wijzigingsgegevens significant is, kan zelfs een laag eindpunt dat is ingesteld op het hoge eindpunt van het vorige wijzigingsgegevensverzoek buiten de huidige tijdlijn liggen.

Permissions

Vereist lidmaatschap van de sysadmin-vaste server rol of db_owner vaste database. Voor alle andere gebruikers is SELECT-machtiging vereist voor alle vastgelegde kolommen in de brontabel en, als er een gatingsrol voor het opnameexemplaren is gedefinieerd, lidmaatschap van die databaserol.

Voorbeelden

Eén. Het teruggeven van de minimale LSN-waarde voor een gespecificeerde capture-instantie

Het volgende voorbeeld geeft de minimale LSN-waarde voor de capture-instantie HumanResources_Employee in de AdventureWorks2025-database terug.

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

B. Het verifiëren van het lage eindpunt van een querybereik

Het volgende voorbeeld gebruikt de minimale LSN-waarde die door sys.fn_cdc_get_min_lsn wordt teruggegeven om te verifiëren dat het voorgestelde lage eindpunt voor een wijzigingsdataquery geldig is voor de huidige tijdlijn van de capture-instantie HumanResources_Employee. Dit voorbeeld gaat ervan uit dat het vorige hoge eindpunt LSN voor de capture-instantie is opgeslagen en beschikbaar is om de @save_to_lsn variabele in te stellen. Voor dit voorbeeld @save_to_lsn is ingesteld op 0x000000000000000000 om het foutafhandelingsgedeelte te dwingen te draaien.

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  

Zie ook

sys.fn_cdc_get_max_lsn (Transact-SQL)
The Transaction Log (SQL Server) (Het transactielogboek (SQL Server))