<sys.fn_all_changes_capture_instance> (Transact-SQL)

Gilt für:SQL Server

Wrapper für alle Änderungsabfragefunktionen . Die Skripts, die zum Erstellen dieser Funktionen erforderlich sind, werden von der gespeicherten sys.sp_cdc_generate_wrapper_function Prozedur generiert. Weitere Informationen zur zum Erstellen sys.fn_all_changes_<capture_instance>verwendeten gespeicherten Prozedur finden Sie unter sys.sp_cdc_generate_wrapper_function (Transact-SQL).

Transact-SQL-Syntaxkonventionen

Syntax

fn_all_changes_<capture_instance> ('start_time' ,'end_time', '<row_filter_option>' )  
  
<capture_instance> ::= The name of the capture instance.  
<row_filter_option> ::=  
{ all  
  | all update old  
}  

Argumente

start_time

Der datetime-Wert , der den niedrigen Endpunkt des Bereichs der Änderungstabelleneinträge darstellt, der in das Resultset aufgenommen werden soll.

Nur Zeilen in der Änderungstabelle cdc.<capture_instance>_CT , deren Commitzeit größer als start_time ist, werden im Resultset enthalten.

Wenn für dieses Argument ein Wert von NULL übergeben wird, entspricht der untere Endpunkt des Abfragebereichs dem unteren Endpunkt des gültigen Bereichs der Aufzeichnungsinstanz.

Wenn der Wert eines @start_time- oder @end_time-Parameters die Zeit der niedrigsten oder höchsten Protokollfolgenummer (LSN) übersteigt, wird bei der Ausführung der generierten Wrapperfunktionen der 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.

end_time

Der datetime-Wert , der den hohen Endpunkt des Bereichs von Änderungstabelleneinträgen darstellt, der in das Resultset aufgenommen werden soll.

Dieser Parameter kann eine von zwei möglichen Bedeutungen annehmen, je nachdem, für den wert ausgewählt @closed_high_end_point wird, wenn sys.sp_cdc_generate_wrapper_function aufgerufen wird, um das Erstellungsskript für die Wrapperfunktion zu generieren:

  • @closed_high_end_point = 1

    Nur Zeilen in der Änderungstabelle cdc.<capture_instance>_CT , deren Commitzeit kleiner oder gleich end_time ist, werden in das Resultset eingeschlossen.

  • @closed_high_end_point = 0

    Nur Zeilen in der Änderungstabelle cdc.capture_instance_CT , die eine zugeordnete Commitzeit streng unter end_time haben, werden in das Resultset eingeschlossen.

Wenn für dieses Argument ein Wert von NULL übergeben wird, entspricht der obere Endpunkt des Abfragebereichs dem oberen Endpunkt des gültigen Bereichs der Aufzeichnungsinstanz.

Wenn der Wert eines @start_time- oder @end_time-Parameters die Zeit der niedrigsten oder höchsten Protokollfolgenummer (LSN) übersteigt, wird bei der Ausführung der generierten Wrapperfunktionen der 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.

<> row_filter_option ::= { all | all update old }

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

Eine der folgenden Optionen ist möglich:

alle
Gibt alle Änderungen innerhalb des angegebenen LSN-Bereichs zurück. Bei Änderungen aufgrund eines Updatevorgangs gibt diese Option nur die Zeile zurück, die die neuen Werte nach Anwendung des Updates enthält.

all update old
Gibt alle Änderungen innerhalb des angegebenen LSN-Bereichs zurück. Bei Änderungen aufgrund eines Updatevorgangs gibt die Option die beiden Zeilen zurück, die die Spaltenwerte vor und nach dem Update enthalten.

Zurückgegebene Tabelle

Spaltenname Spaltentyp BESCHREIBUNG
__CDC_STARTLSN binary(10) Die Commit-LSN der Transaktion, die der Änderung zugeordnet ist. Alle Änderungen, die in derselben Transaktion committet werden, verwenden den gleichen Commit-LSN.
__CDC_SEQVAL binary(10) Sequenzwert, mit dem Zeilenänderungen in einer Transaktion sortiert werden.
<Spalten aus @column_list> variiert Die Spalten, die im column_list -Argument sp_cdc_generate_wrapper_function identifiziert werden, wenn es aufgerufen wird, um das Skript zu generieren, das die Wrapperfunktion erstellt.
__CDC_OPERATION nvarchar(2) Ein Vorgangscode, der den Vorgang angibt, der zum Anwenden der Zeile auf die Zielumgebung erforderlich ist. Sie variiert je nach dem Wert des Arguments , das im Aufruf angegeben row_filter_option:

row_filter_option = "all"

'D' - Löschvorgang

'I' - Einfügevorgang

'UN' - Updatevorgang, neue Werte

row_filter_option = "alle updates alt"

'D' - Löschvorgang

'I' - Einfügevorgang

'UN' - Updatevorgang, neue Werte

'UO' - Updatevorgang, alte Werte
<Spalten aus @update_flag_list> bit Ein Bitflag, das durch Anfügen von _uflag an den Spaltennamen benannt wird. Das Flag ist stets auf NULL festgelegt, wenn __CDC_OPERATION 'D', 'I' oder 'UO' ist. Wenn __CDC_OPERATION den Wert 'UN' besitzt, wird der Wert 1 festgelegt, wenn das Update eine Änderung der entsprechenden Spalte bewirkt hat. Andernfalls ist es 0.

Bemerkungen

Die fn_all_changes_<capture_instance> Funktion dient als Wrapper für die cdc.fn_cdc_get_all_changes_<capture_instance> Abfragefunktion. Die sys.sp_cdc_generate_wrapper gespeicherte Prozedur wird verwendet, um das Skript zum Erstellen des Wrappers zu generieren.

Wrapperfunktionen werden nicht automatisch erstellt. Es gibt zwei Dinge, die Sie tun müssen, um Wrapperfunktionen zu erstellen:

  1. Führen Sie die gespeicherte Prozedur aus, um das Skript zu generieren, das den Wrapper erstellt.

  2. Führen Sie das Skript aus, das die Wrapperfunktion tatsächlich erstellt.

Wrapperfunktionen ermöglichen es Benutzern, Änderungen systematisch abzufragen, die innerhalb eines Intervalls aufgetreten sind, das durch datetime-Werte anstelle von LSN-Werten begrenzt ist. Die Wrapperfunktionen führen alle erforderlichen Konvertierungen zwischen den bereitgestellten datetime-Werten und den LSN-Werten aus, die intern als Argumente für die Abfragefunktionen benötigt werden. Wenn die Wrapperfunktionen seriell verwendet werden, um einen Datenstrom mit Änderungsdaten zu verarbeiten, stellen sie sicher, dass keine Daten verloren gehen oder wiederholt werden, sofern die folgende Konvention eingehalten wird: Der @end_time Wert des einem Aufruf zugeordneten Intervalls wird als Wert für das @start_time dem nachfolgenden Aufruf zugeordnete Intervall angegeben.

Wenn Sie den Parameter @closed_high_end_point bei Erstellung des Skripts verwenden, können Sie Wrapper generieren, die im angegebenen Abfragefenster eine geschlossene obere Grenze oder eine offene untere Grenze unterstützen. Sie können also entscheiden, ob Einträge mit einer Commitzeit in das Intervall aufgenommen werden sollen, die der oberen Grenze des Extrahierungsintervalls entspricht. Standardmäßig wird die Obergrenze aufgenommen.

Das Resultset, das von der Wrapperfunktion für alle Änderungen zurückgegeben wird, gibt die Spalten __$start_lsn und __$seqval der Änderungstabelle als Spalten __CDC_STARTLSN bzw. __CDC_SEQVAL zurück. Es folgen nur die nachverfolgten Spalten, die beim Generieren des Wrappers im @column_list-Parameter angezeigt wurden. Wenn @column_list NULL ist, werden alle nachverfolgten Quellspalten zurückgegeben. Den Quellspalten folgt die Vorgangspalte, __CDC_OPERATION. Es handelt sich um eine Spalte mit einem oder zwei Zeichen, die den Vorgang identifiziert.

Bitflags werden dann dem Resultset für die einzelnen Spalten angehängt, die im Parameter @update_flag_list identifiziert sind. Für den Wrapper für alle Änderungen sind die Bitflags immer NULL, wenn __CDC_OPERATION "D", "I" oder "UO" lautet. Wenn __CDC_OPERATION auf 'UN' festgelegt ist, wird das Flag auf 1 oder 0 gesetzt, je nachdem, ob der Updatevorgang zu einer Änderung der Spalte geführt hat.

Die Konfigurationsvorlage "Instanziieren von CDC-Wrapper-TVFs für Schema" zeigt, wie mithilfe der sp_cdc_generate_wrapper_function gespeicherten Prozedur CREATE-Skripts für alle Wrapperfunktionen für die definierten Abfragefunktionen eines Schemas abgerufen werden. Diese Skripts werden dann von der Vorlage erstellt. Weitere Informationen zu Vorlagen finden Sie unter Vorlagen Explorer.

Die Wrapperfunktionen sys.fn_all_changes_<capture_instance> und sys.fn_net_changes_<capture_instance> sind von den Systemfunktionen cdc.fn_cdc_get_all_changes_<capture_instance> und cdc.fn_cdc_get_net_changes_<capture_instance>abhängig. Fehler 313 wird erwartet, wenn der angegebene LSN-Bereich beim Aufrufen cdc.fn_cdc_get_all_changes_<capture_instance> von oder cdc.fn_cdc_get_net_changes_<capture_instance>nicht geeignet ist. Wenn der lsn_value Parameter über die Zeit des niedrigsten LSN oder höchsten LSN hinaus liegt, wird die Ausführung dieser Funktionen im 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. Beispiel für eine Problemumgehung finden Sie unter ReplTalk auf GitHub.

Weitere Informationen