Teilen über


<cdc.fn_cdc_get_all_changes_capture_instance> (Transact-SQL)

Gilt für: SQL Server

Gibt eine Zeile für jede auf die Quelltabelle innerhalb des angegebenen Bereichs der Protokollfolgenummer (Log Sequence Number, LSN) angewendete Änderung an. Wenn an einer Quellzeile während des Intervalls mehrere Änderungen vorgenommen wurden, wird jede Änderung im zurückgegebenen Resultset dargestellt. Zusätzlich zum Zurückgeben der Änderungsdaten stellen vier Metadatenspalten die Informationen bereit, die Sie zum Anwenden der Änderungen auf eine andere Datenquelle benötigen. Über Zeilenfilterungsoptionen werden der Inhalt der Metadatenspalten sowie die im Resultset zurückgegebenen Zeilen bestimmt. Wenn die Filteroption 'all' angegeben ist, verfügt jede Änderung über genau eine Zeile, um die Änderung zu identifizieren. Wenn die Option 'all update old' angegeben ist, werden die Updatevorgänge in zwei Zeilen dargestellt: Eine enthält die Werte der aufgezeichneten Spalten vor dem Update und die andere enthält die Werte der aufgezeichneten Spalten nach dem Update.

Diese Enumerationsfunktion wird zu dem Zeitpunkt erstellt, zu dem eine Quelltabelle für Change Data Capture aktiviert wird. Der Funktionsname wird abgeleitet und verwendet das Format cdc.fn_cdc_get_all_changes_<capture_instance> , in dem capture_instance der für die Aufnahmeinstanz angegebene Wert ist, wenn die Quelltabelle für die Änderungsdatenerfassung aktiviert ist.

Transact-SQL-Syntaxkonventionen

Syntax

  
cdc.fn_cdc_get_all_changes_capture_instance ( from_lsn , to_lsn , '<row_filter_option>' )  
  
<row_filter_option> ::=  
{ all  
 | all update old  
}  

Argumente

from_lsn

Der LSN-Wert, der den unteren Endpunkt des LSN-Bereichs darstellt, der im Resultset enthalten sein soll. from_lsn ist binary(10).

Nur Zeilen im cdc.[ capture_instance]_CT Tabelle mit einem Wert in __$start_lsn größer oder gleich from_lsn werden im Resultset enthalten.

to_lsn

Der LSN-Wert, der den oberen Endpunkt des LSN-Bereichs darstellt, der im Resultset enthalten sein soll. to_lsn ist binary(10).

Nur Zeilen im cdc.[ capture_instance]_CT Tabelle mit einem Wert in __$start_lsn größer oder gleich from_lsn und kleiner als oder gleich to_lsn werden in das Resultset einbezogen.

<> row_filter_option ::= { alle | alle aktualisieren alt }

Eine Option, die den Inhalt der Metadatenspalten sowie die im Resultset zurückgegebenen Zeilen steuert.

Eine der folgenden Optionen ist möglich:

all
Gibt alle Änderungen innerhalb des angegebenen LSN-Bereichs zurück. Bei Änderungen aufgrund eines Updatevorgangs gibt diese Option nur die Zeilen zurück, die die neuen Werte enthalten, nachdem das Update angewendet wurde.

all update old
Gibt alle Änderungen innerhalb des angegebenen LSN-Bereichs zurück. Bei Änderungen aufgrund eines Aktualisierungsvorgangs gibt diese Option sowohl die Zeile zurück, die die Spaltenwerte vor der Aktualisierung enthält, als auch die Zeile, die die Spaltenwerte nach der Aktualisierung enthält.

Zurückgegebene Tabelle

Spaltenname Datentyp BESCHREIBUNG
__$start_lsn binary(10) Commit-LSN, die der Änderung zugeordnet ist, die die Commitreihenfolge der Änderung beibehält. Änderungen, für die ein Commit in derselben Transaktion ausgeführt wurde, verwenden denselben Commit-LSN-Wert.
__$seqval binary(10) Sequenzwert, der verwendet wird, um Änderungen an einer Zeile innerhalb einer Transaktion zu sortieren.
__$operation int Identifiziert den Vorgang der Datenbearbeitungssprache (Data Manipulation Language, DML), der erforderlich ist, um die Zeile der Änderungsdaten auf die Zieldatenquelle anzuwenden. Dabei kann es sich um eine der folgenden Methoden handeln:

1 = Löschen

2 = Einfügen

3 = Update (die aufgezeichneten Spaltenwerte liegen vor dem Updatevorgang). Dieser Wert ist nur gültig, wenn die Zeilenfilteroption 'all update old' angegeben ist.

4 = Update (die aufgezeichneten Spaltenwerte liegen nach dem Updatevorgang).
__$update_mask varbinary(128) Eine Bitmaske mit einem Bit, das den einzelnen aufgezeichneten Spalten entspricht, die für die Aufzeichnungsinstanz identifiziert wurden. Dieser Wert hat alle definierten Bits auf 1 festgelegt, wenn __$operation = 1 oder 2 ist. Wenn __$operation = 3 oder 4 ist, werden nur die Bits, die spalten entsprechen, die geändert wurden, auf 1 festgelegt.
<erfasste Quelltabellenspalten> Variiert Bei den verbleibenden Spalten, die von der Funktion zurückgegeben werden, handelt es sich um die aufgezeichneten Spalten, die beim Erstellen der Aufzeichnungsinstanz identifiziert wurden. Wenn in der Liste der aufgezeichneten Spalten keine Spalten angegeben wurden, werden alle Spalten in der Quelltabelle zurückgegeben.

Berechtigungen

Erfordert die Mitgliedschaft in der festen Serverrolle "sysadmin " oder db_owner festen Datenbankrolle. 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. Wenn der Aufrufer nicht über die Berechtigung zum Anzeigen der Quelldaten verfügt, gibt die Funktion den Fehler 229 zurück. The SELECT permission was denied on the object 'fn_cdc_get_all_changes_...', database '\<DatabaseName>', schema 'cdc'.

Hinweise

Spalten vom Datentyp "Image", "Text" und "ntext " werden immer einen NULL-Wert zugewiesen, wenn __$operation = 1 oder __$operation = 3. Spalten vom Datentyp varbinary(max), varchar(max) oder nvarchar(max) werden einem NULL-Wert zugewiesen, wenn __$operation = 3, es sei denn, die Spalte wurde während der Aktualisierung geändert. Wenn __$operation = 1, werden diese Spalten zum Zeitpunkt des Löschens ihrem Wert zugewiesen. Berechnete Spalten in einer Aufzeichnungsinstanz besitzen immer den Wert NULL.

Fehler 313 wird erwartet, wenn der angegebene LSN-Bereich beim Aufrufen oder cdc.fn_cdc_get_net_changes_<capture_instance>Aufrufen cdc.fn_cdc_get_all_changes_<capture_instance> nicht geeignet ist. Wenn der lsn_value Parameter über den Zeitpunkt des niedrigsten LSN oder des höchsten LSN hinausgeht, wird die Ausführung dieser Funktionen in Fehler 313 zurückgegeben: Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function Der Entwickler sollte sich um diesen Fehler kümmern.

Beispiele

Es stehen mehrere SQL Server Management Studio-Vorlagen zur Verfügung, die zeigen, wie Sie die Abfragefunktionen für die Änderungsdatenerfassung verwenden. Diese Vorlagen sind im Menü "Ansicht" in Management Studio verfügbar. Weitere Informationen finden Sie im Vorlagen-Explorer.

Im folgenden Beispiel wird die Enumerate All Changes for Valid Range Template veranschaulicht. Darin werden mit der Funktion cdc.fn_cdc_get_all_changes_HR_Department alle derzeit verfügbaren Änderungen für die Aufzeichnungsinstanz HR_Department gemeldet, die für die Quelltabelle HumanResources.Department in der AdventureWorks2022-Datenbank definiert ist.

-- ========  
-- Enumerate All Changes for Valid Range Template  
-- ========  
USE AdventureWorks2022;  
GO  
  
DECLARE @from_lsn binary(10), @to_lsn binary(10);  
SET @from_lsn = sys.fn_cdc_get_min_lsn('HR_Department');  
SET @to_lsn   = sys.fn_cdc_get_max_lsn();  
SELECT * FROM cdc.fn_cdc_get_all_changes_HR_Department  
  (@from_lsn, @to_lsn, N'all');  
GO  

Weitere Informationen