sys.fn_cdc_get_min_lsn (Transact-SQL)

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

Themenlink (Symbol)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 vom Datentyp sysname.

Rückgabetypen

binary(10)

Hinweise

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, diese Prüfungen durchzuführen, weil sich der untere Endpunkt einer Aufzeichnungsinstanz während des Cleanupvorgangs für die Änderungstabelle ändert. 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. Weitere Informationen zum Ändern der Change Data Capture-Zeitachse finden Sie unter Konfigurieren von Change Data Capture.

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 kleinste LSN-Wert für die Aufzeichnungsinstanz HumanResources_Employee in der AdventureWorks2008R2-Datenbank zurückgegeben.

USE AdventureWorks2008R2;
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 AdventureWorks2008R2;
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