Condividi tramite


sys.fn_cdc_get_min_lsn (Transact-SQL)

Si applica a: SQL Server

Restituisce il valore della colonna start_lsn per l'istanza di acquisizione specificata dalla tabella di sistema cdc.change_tables . Questo valore rappresenta l'endpoint inferiore dell'intervallo di validità per l'istanza di acquisizione.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

  
sys.fn_cdc_get_min_lsn ( 'capture_instance_name' )  

Argomenti

' capture_instance_name '
Nome dell'istanza di acquisizione. capture_instance_name è sysname.

Tipi restituiti

binary(10)

Osservazioni:

Restituisce 0x00000000000000000000 quando l'istanza di acquisizione non esiste o quando il chiamante non è autorizzato ad accedere ai dati delle modifiche associati all'istanza di acquisizione.

Questa funzione è utilizzata in genere per identificare l'endpoint inferiore della cronologia dell'acquisizione dei dati delle modifiche associati a un'istanza di acquisizione. È inoltre possibile utilizzare questa funzione per verificare che gli endpoint di una query di intervallo si trovino all'interno della cronologia dell'istanza di acquisizione prima di richiedere i dati delle modifiche. È importante eseguire tali controlli perché l'endpoint inferiore di un'istanza di acquisizione cambia quando viene eseguito il processo di pulizia sulle tabelle delle modifiche. Se il tempo tra le richieste dei dati delle modifiche è significativo, anche un endpoint inferiore impostato sull'endpoint superiore della richiesta precedente dei dati delle modifiche potrebbe cadere al di fuori della cronologia corrente.

Autorizzazioni

È richiesta l'appartenenza al ruolo predefinito del server sysadmin o al ruolo predefinito del database db_owner. Per tutti gli altri utenti, è richiesta l'autorizzazione SELECT su tutte le colonne acquisite nella tabella di origine e, se è stato definito un ruolo di controllo per l'istanza di acquisizione, l'appartenenza a tale ruolo del database.

Esempi

R. Recupero del valore LSN minimo per un'istanza di acquisizione specificata

Nell'esempio seguente viene restituito il valore LSN minimo per l'istanza HumanResources_Employee di acquisizione nel database AdventureWorks2022.

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

B. Verifica dell'endpoint inferiore di una query di intervallo

Nell'esempio seguente è utilizzato il valore LSN minimo restituito da sys.fn_cdc_get_min_lsn per verificare che l'endpoint inferiore proposto per una query che modifica dei dati sia valido per la cronologia corrente per l'istanza di acquisizione HumanResources_Employee. Questo esempio presuppone che il numero LSN dell'endpoint superiore precedente per l'istanza di acquisizione sia stato salvato e sia disponibile per impostare la variabile @save_to_lsn. Per gli scopi di questo esempio, @save_to_lsn è impostato su 0x000000000000000000 per forzare l'esecuzione della sezione della gestione degli errori.

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  

Vedi anche

sys.fn_cdc_get_max_lsn (Transact-SQL)
Log delle transazioni (SQL Server)