<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 sys.sp_cdc_generate_wrapper_function
gespeicherten Prozedur generiert. Weitere Informationen zur gespeicherten Prozedur, die zum Erstellen verwendet wird, finden Sie unter sys.sp_cdc_generate_wrapper_function (Transact-SQL).For more information about the stored procedure used to create sys.fn_all_changes_<capture_instance>
, see 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, die in das Resultset eingeschlossen werden sollen.
Nur Zeilen in der Änderungstabelle, die cdc.<capture_instance>_CT
eine zugeordnete Commit-Zeit haben, die größer als start_time sind, 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 der Änderungstabelleneinträge darstellt, die in das Resultset eingeschlossen werden sollen.
Dieser Parameter kann eine von zwei möglichen Bedeutungen übernehmen, abhängig vom wert, sys.sp_cdc_generate_wrapper_function
der beim Aufruf zum Generieren des Erstellungsskripts für die Wrapperfunktion ausgewählt @closed_high_end_point wird:
@closed_high_end_point = 1
Nur Zeilen in der
cdc.<capture_instance>_CT
Änderungstabelle, deren Commitzeit kleiner oder gleich end_time ist, sind im Resultset enthalten.@closed_high_end_point = 0
Nur Zeilen in der
cdc.capture_instance_CT
Änderungstabelle, die eine zugeordnete Commit-Zeit haben, die streng kleiner als end_time sind, sind im Resultset enthalten.
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 ::= { alle | alle aktualisieren alt }
Eine Option, die den Inhalt der Metadatenspalten sowie die im Resultset zurückgegebenen Zeilen bestimmt.
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 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 zugesichert werden, teilen 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 , row_filter_option im Aufruf angegeben werden: row_filter_option = 'alle' 'D' - Löschvorgang 'I' - Einfügevorgang 'UN' - Updatevorgang, neue Werte row_filter_option = "Alle aktualisieren 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 wird immer auf NULL festgelegt, wenn __CDC_OPERATION "D", "I", von "UO" ist. Wenn __CDC_OPERATION "UN" ist, wird sie auf 1 festgelegt, wenn das Update eine Änderung an der entsprechenden Spalte erzeugt hat. Andernfalls ist es 0. |
Hinweise
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:
Führen Sie die gespeicherte Prozedur aus, um das Skript zu generieren, das den Wrapper erstellt.
Führen Sie das Skript aus, das die Wrapperfunktion tatsächlich erstellt.
Mit Wrapperfunktionen können Benutzer systematisch Änderungen abfragen, die innerhalb eines Intervalls, das durch Datumstimewerte und nicht durch LSN-Werte begrenzt ist, aufgetreten sind. 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 serial verwendet werden, um einen Datenstrom mit Änderungsdaten zu verarbeiten, stellen sie sicher, dass keine Daten verloren gehen oder wiederholt werden, sofern die folgende Konvention befolgt wird: Der @end_time Wert des Intervalls, das einem Aufruf zugeordnet ist, wird als Wert für das @start_time Intervall angegeben, das dem nachfolgenden Aufruf zugeordnet ist.
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 von der Funktion " Changes Wrapper" zurückgegebene Resultset gibt die Spalten __$start_lsn und __$seqval der Änderungstabelle als Spalten __CDC_STARTLSN bzw. __CDC_SEQVAL zurück. Es folgt diesen nur den nachverfolgten Spalten, die im @column_list-Parameter angezeigt wurden, als der Wrapper generiert wurde. 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. Bei allen Änderungswrappern sind die Bitkennzeichnungen immer NULL, wenn __CDC_OPERATION "D", "I" oder "UO" lautet. Wenn __CDC_OPERATION "UN" ist, wird das Flag auf 1 oder 0 festgelegt, je nachdem, ob der Aktualisierungsvorgang eine Änderung an der Spalte verursacht hat.
Die Konfigurationsvorlage für die Änderung der Datenerfassung "Instanziierte CDC Wrapper TVFs for Schema" zeigt, wie Sie mithilfe der sp_cdc_generate_wrapper_function
gespeicherten Prozedur CREATE-Skripts für alle Wrapperfunktionen für die definierten Abfragefunktionen eines Schemas abrufen. Diese Skripts werden dann von der Vorlage erstellt. Weitere Informationen zu Vorlagen finden Sie im Vorlagen-Explorer.
Die Wrapperfunktionen sys.fn_all_changes_<capture_instance>
und sys.fn_net_changes_<capture_instance>
sind abhängig von den Systemfunktionen cdc.fn_cdc_get_all_changes_<capture_instance>
und cdc.fn_cdc_get_net_changes_<capture_instance>
. 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.