sys.fn_cdc_get_min_lsn (Transact-SQL)

Gilt für:SQL Server

Gibt den start_lsn Spaltenwert für die angegebene Erfassungs-instance aus der cdc.change_tables-Systemtabelle zurück. Dieser Wert stellt den unteren Endpunkt des Gültigkeitsintervalls für die Aufzeichnungsinstanz dar.

Transact-SQL-Syntaxkonventionen

Syntax

  
sys.fn_cdc_get_min_lsn ( 'capture_instance_name' )  

Argumente

"capture_instance_name"
Der Name der Aufzeichnungsinstanz. capture_instance_name ist sysname.

Rückgabetypen

binary(10)

Bemerkungen

Gibt 0x00000000000000000000 zurück, wenn die Aufzeichnungsinstanz nicht vorhanden oder der Aufrufer nicht berechtigt ist, auf die Änderungsdaten zuzugreifen, die der Aufzeichnungsinstanz zugeordnet sind.

Diese Funktion dient gewöhnlich zum Identifizieren des unteren Endpunkts der Change Data Capture-Zeitachse, die einer Aufzeichnungsinstanz zugeordnet ist. Außerdem können Sie mit dieser Funktion vor der Anforderung von Änderungsdaten überprüfen, ob die Endpunkte eines Abfragebereichs innerhalb der Zeitachse der Aufzeichnungsinstanz liegen. Es ist wichtig, solche Überprüfungen durchzuführen, da der niedrige Endpunkt einer Erfassung instance änderungen, wenn die Bereinigung für die Änderungstabellen ausgeführt wird. Falls ein längerer Zeitraum zwischen den Anforderungen von Änderungsdaten vergeht, könnte sogar ein niedriger Endpunkt, der auf den oberen Endpunkt der vorherigen Anforderung von Änderungsdaten festgelegt wurde, außerhalb der aktuellen Zeitachse liegen.

Berechtigungen

Erfordert die Mitgliedschaft in der festen Serverrolle sysadmin oder in der festen Datenbankrolle db_owner. Für alle anderen Benutzer ist die SELECT-Berechtigung für alle aufgezeichneten Spalten in der Quelltabelle und, wenn eine Gatingrolle für die Aufzeichnungsinstanz definiert wurde, eine Mitgliedschaft in dieser Datenbankrolle erforderlich.

Beispiele

A. Zurückgeben des kleinsten LSN-Werts für eine angegebene Aufzeichnungsinstanz

Im folgenden Beispiel wird der minimale LSN-Wert für die Erfassung instance HumanResources_Employee in der AdventureWorks2022-Datenbank zurückgegeben.

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

B. Überprüfen des unteren Endpunkts eines Abfragebereichs

Im folgenden Beispiel wird der kleinste von sys.fn_cdc_get_min_lsn zurückgegebene LSN-Wert verwendet, um zu überprüfen, ob der vorgeschlagene untere Endpunkt für eine Abfrage von Änderungsdaten für die aktuelle Zeitachse der Aufzeichnungsinstanz HumanResources_Employee gültig ist. In diesem Beispiel wird davon ausgegangen, dass die LSN des vorherigen oberen Endpunkts für die Aufzeichnungsinstanz gespeichert wurde und für die Festlegung der @save_to_lsn-Variablen verfügbar ist. Für dieses Beispiel wird @save_to_lsn auf 0x000000000000000000 festgelegt, um die Ausführung des Fehlerbehandlungsabschnitts zu erzwingen.

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  

Weitere Informationen

sys.fn_cdc_get_max_lsn (Transact-SQL)
Das Transaktionsprotokoll [SQL Server]