Freigeben über


<sys.fn_net_changes_capture_instance> (Transact-SQL)

Gilt für: SQL Server

Wrapper für die Net changes query functions. 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_net_changes_<capture_instance>, see sys.sp_cdc_generate_wrapper_function (Transact-SQL).

Transact-SQL-Syntaxkonventionen

Syntax

  
fn_net_changes_<capture_instance> ('start_time', 'end_time', '<row_filter_option>' )  
  
<capture_instance> ::= The name of the capture instance.  
<row_filter_option> ::=  
{ all  
  | all with mask  
  | all with merge  
}  

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 streng 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 Bedeutungen annehmen, abhängig vom wert, der beim Aufruf zum Generieren des Skripts zum Erstellen der Wrapperfunktion ausgewählt @closed_high_end_point sys.sp_cdc_generate_wrapper_function wurde:

  • @closed_high_end_point = 1

    Nur Zeilen in der cdc.<capture_instance>_CT Änderungstabelle mit einem Wert in __$start_lsn und einer entsprechenden Commit-Zeit, die kleiner oder gleich start_time ist, sind im Resultset enthalten.

  • @closed_high_end_point = 0

    Nur Zeilen in der cdc.<capture_instance>_CT Änderungstabelle mit einem Wert in __$start_lsn und einer entsprechenden Commit-Zeit, die streng kleiner als start_time sind, werden in das Resultset einbezogen.

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 mit Maske | alle mit Zusammenführung }

Eine Option, die den Inhalt der Metadatenspalten sowie die im Resultset zurückgegebenen Zeilen steuert. Eine der folgenden Optionen ist möglich:

all
Gibt den endgültigen Inhalt einer geänderten Zeile in den Inhaltsspalten zurück sowie den erforderlichen Vorgang zum Anwenden der Zeile in der Metadatenspalte __CDC_OPERATION.

all with mask
Gibt den endgültigen Inhalt einer geänderten Zeile in den Inhaltsspalten zurück sowie den erforderlichen Vorgang zum Anwenden der einzelnen Zeilen in der Metadatenspalte __CDC_OPERATION. Wenn bei Generierung des Skripts zur Erstellung der Wrapperfunktion eine Aktualisierungsflagliste angegeben wurde, müssen Sie mit dieser Option die Aktualisierungsmaske füllen.

all with merge
Gibt den endgültigen Inhalt aller in den Inhaltsspalten geänderten Zeilen zurück.

Die Spalte __CDC_OPERATION ist einer der folgenden beiden Werte:

  • D, wenn die Zeile gelöscht werden muss.

  • M, wenn die Zeile eingefügt oder aktualisiert werden muss

Die Logik zum Bestimmen, ob eine Einfügung oder eine Aktualisierung erforderlich ist, um eine Änderung auf ein Ziel anzuwenden, führt zu mehr Komplexität bei der Abfrage. Verwenden Sie diese Option für verbesserte Leistung, wenn nicht zwischen Einfügungs- und Aktualisierungsvorgängen unterschieden werden muss. Dieser Ansatz funktioniert am besten in Zielumgebungen, in denen ein Zusammenführungsvorgang direkt verfügbar ist.

Zurückgegebene Tabelle

Spaltenname Spaltentyp Beschreibung
<Spalten aus @column_list> variiert Die Spalten, die im column_list Argument sp_cdc_generate_wrapper_function identifiziert werden, wenn das Skript aufgerufen wird, um das Skript zu generieren, um den Wrapper zu erstellen. Wenn column_list NULL ist, werden alle nachverfolgten Quellspalten im Resultset angezeigt.
__CDC_OPERATION nvarchar(2) Ein Vorgangscode, der angibt, welcher Vorgang auf die Zeile der Zielumgebung angewendet werden muss. Der Vorgang hängt vom Wert des Arguments row_filter_option ab, der im folgenden Aufruf angegeben wird:

row_filter_option = "alle" , "alle mit Maske"

'D' - Löschvorgang

'I' - Einfügevorgang

'UN' - Aktualisierungsvorgang

row_filter_option = "Alle mit Zusammenführung"

'D' - Löschvorgang

'M' - Einfüge- oder Aktualisierungsvorgang
<Spalten aus @update_flag_list> bit Ein Bit-Flag, das durch Anfügen _uflag an den Spaltennamen benannt wird. Das Kennzeichen übernimmt nur dann einen Wert ungleich NULL, wenn row_filter_option = "alle mit Maske" und __CDC_OPERATION = "UN" zurück. Es wird auf 1 eingestellt, wenn die entsprechende Spalte innerhalb des Abfragefensters geändert wurde. Andernfalls ist es 0.

Hinweise

Die fn_net_changes_<capture_instance> Funktion dient als Wrapper für die cdc.fn_cdc_get_net_changes_<capture_instance> Abfragefunktion. Die sys.sp_cdc_generate_wrapper gespeicherte Prozedur wird verwendet, um das Skript für den Wrapper zu erstellen.

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.

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 Resultset, das von der Net Changes Wrapper-Funktion zurückgegeben wird, gibt nur die nachverfolgten Spalten zurück, die @column_list beim Generieren des Wrappers enthalten waren. Wenn @column_list NULL ist, werden alle verfolgten 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 net changes wrapper, the bit flags will always BE NULL if the @row_filter_option is used in the call to the wrapper function is 'all' or 'all with merge'. Der Wert des Flags ist ebenfalls NULL, wenn die @row_filter_option auf 'all with mask' und __CDC_OPERATION auf 'D' oder 'I' gesetzt ist. Wenn __CDC_OPERATION "UN" ist, wird das Flag auf 1 oder 0 festgelegt, je nachdem, ob der Nettoaktualisierungsvorgang 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.

Weitere Informationen