Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
SSIS Integration Runtime in Azure Data Factory
Wichtig
CDC Flow-Komponenten, einschließlich CDC Control Task, CDC Source und CDC Splitter, sind veraltet. Weitere Informationen finden Sie in der Ankündigung.
Der CDC-Steuerungstask wird verwendet, um den Lebenszyklus von Change Data Capture-Paketen (CDC) zu steuern. Es verarbeitet die Synchronisierung des CDC-Pakets mit dem Paket für den initialen Ladevorgang sowie die Verwaltung der LSN-Bereiche (Log Sequence Number), die während eines Durchlaufs eines CDC-Pakets verarbeitet werden. Außerdem befasst sich der CDC-Steuerungs-Task mit Fehlerszenarien und der Wiederherstellung.
Der CDC-Steuerungstask verwaltet den Status des CDC-Pakets in einer SSIS-Paketvariablen und kann diesen auch in einer Datenbanktabelle dauerhaft speichern, damit der Status über Paketaktivierungen hinweg und zwischen mehreren Paketen beibehalten werden kann, die zusammen einen allgemeinen CDC-Prozess durchführen (ein Task kann z. B. für das erstmalige Laden und ein anderer Task für Trickle-Feed-Updates zuständig sein).
Der CDC-Steuerungstask unterstützt zwei Gruppen von Vorgängen. Eine Gruppe koordiniert die Synchronisierung von Erstladen und Änderungsverarbeitung, und die andere verwaltet den LSN-Bereich der Änderungsverarbeitung für einen Lauf eines CDC-Pakets und verfolgt, was erfolgreich verarbeitet wurde.
Die folgenden Vorgänge behandeln die Synchronisierung von erstmaligem Laden und Änderungsverarbeitung:
| Vorgang | BESCHREIBUNG |
|---|---|
| ResetCdcState | Dieser Vorgang wird verwendet, um den persistenten CDC-Status zurückzusetzen, der dem aktuellen CDC-Kontext zugeordnet ist. Nachdem dieser Vorgang ausgeführt wurde, bildet die aktuell höchste LSN aus der Tabelle „LSN-timestamp“ sys.fn_cdc_get_max_lsn den Anfang des nächsten Verarbeitungsbereichs. Für diesen Vorgang ist eine Verbindung zur Quelldatenbank erforderlich. |
| MarkInitialLoadStart | Dieser Vorgang wird zu Beginn eines Pakets für das erstmalige Laden verwendet, um die aktuelle LSN in der Quelldatenbank aufzuzeichnen, bevor das Paket für das erstmalige Laden mit dem Lesen der Quelltabellen beginnt. Dies erfordert eine Verbindung zur Quelldatenbank, damit sys.fn_cdc_get_max_lsnaufgerufen werden kann.Wenn Sie MarkInitialLoadStart wählen, wenn Sie mit SQL Server CDC (also nicht Oracle) arbeiten, muss der im Verbindungsmanager angegebene Benutzer entweder db_owner oder sysadmin sein. |
| MarkiereEndeDerAnfänglichenLadung | Dieser Vorgang wird am Ende eines Pakets zum erstmaligen Laden verwendet, um die aktuelle LSN in der Quelldatenbank aufzuzeichnen, nachdem das Paket für das erstmalige Laden das Lesen der Quelltabellen beendet hat. Diese LSN wird durch das Aufzeichnen des aktuellen Zeitpunkts, zu dem dieser Vorgang aufgetreten ist, und das anschließende Abfragen der Zuordnungstabelle cdc.lsn_time_in der CDC-Datenbank ermittelt. Dabei wird nach einer Änderung gesucht, die nach diesem Zeitpunkt aufgetreten ist.Wenn Sie MarkInitialLoadEnd wählen, wenn Sie mit SQL Server CDC arbeiten (d.h. nicht Oracle), muss der im Verbindungsmanager angegebene Benutzer entweder db_owner oder sysadmin sein. |
| MarkCdcStart | Dieser Vorgang wird verwendet, wenn das erstmalige Laden aus einer Snapshot-Datenbank erfolgt. In diesem Fall sollte die Änderungsverarbeitung unmittelbar nach der Snapshot-LSN beginnen. Sie können den Namen der zu verwendenden Snapshotdatenbank angeben, und der CDC-Steuerungstask fragt die Snapshot-LSN von SQL Server ab. Sie können die Momentaufnahme-LSN auch direkt angeben. Wenn Sie MarkCdcStart wählen, wenn Sie mit SQL Server CDC (also nicht Oracle) arbeiten, muss der im Verbindungsmanager angegebene Benutzer entweder db_owner oder sysadmin sein. |
Die folgenden Vorgänge werden verwendet, um den Verarbeitungsbereich zu verwalten:
| Vorgang | BESCHREIBUNG |
|---|---|
| Verarbeitungsbereich abrufen | Dieser Vorgang wird vor dem Aufrufen des Datenflusses verwendet, der den CDC-Quelldatenfluss nutzt. Dabei wird ein Bereich von LSNs festgelegt, den der CDC-Quelldatenfluss beim Aufruf liest. Der Bereich wird in einer SSIS-Paketvariablen gespeichert, die von der CDC-Quelle während der Datenflussverarbeitung verwendet wird. Weitere Informationen zu den gespeicherten Status finden Sie unter Definieren einer Statusvariablen. |
| BearbeitetenBereichMarkieren | Dieser Vorgang wird nach jeder CDC-Ausführung ausgeführt (nachdem der CDC-Datenfluss erfolgreich abgeschlossen wurde), um die letzte LSN aufzuzeichnen, die bei der CDC-Ausführung vollständig verarbeitet wurde. Bei der nächsten Ausführung von GetProcessingRange dient diese Position als Startpunkt für den Verarbeitungsbereich. |
Umgang mit der Persistenz des CDC-Status
Die CDC-Steuerungsaufgabe behält zwischen den Aktivierungen einen persistenten Zustand bei. Die im CDC-Status gespeicherten Informationen werden verwendet, um den Verarbeitungsbereich für das CDC-Paket zu bestimmen und zu verwalten und Fehlerzustände zu erkennen. Der persistente Status wird als Zeichenfolge gespeichert. Weitere Informationen finden Sie unter Definieren einer Statusvariablen.
Die CDC-Steuerungsaufgabe unterstützt zwei Arten der Statuspersistenz
Manuelle Statuspersistenz: In diesem Fall verwaltet der CDC-Steuerungstask den in einer Paketvariablen gespeicherten Status. Der Paketentwickler muss die Variable vor dem Aufrufen der CDC-Steuerung jedoch aus einem persistenten Speicher lesen und dann in diesen persistenten Speicher zurückschreiben, nachdem die CDC-Steuerung zuletzt aufgerufen und die CDC-Ausführung abgeschlossen wurde.
Automatische Statuspersistenz: Der CDC-Status wird in einer Tabelle in einer Datenbank gespeichert. Der Status wird unter einem in der StateName -Eigenschaft angegebenen Namen in einer Tabelle gespeichert, die in der Tabelle für Speicherstatus -Eigenschaft angegeben ist. Sie befindet sich in einem ausgewählten Verbindungs-Manager zum Speichern des Status. Die Standardeinstellung ist der Quellverbindungs-Manager, aber häufig wird der Zielverbindungs-Manager verwendet. Der CDC-Steuerungsvorgang aktualisiert den Statuswert in der Statustabelle, und dies wird als Teil der umgebenden Transaktion committet.
Fehlerbehandlung
Der CDC-Steuerungstask meldet möglicherweise in folgenden Fällen einen Fehler:
Das Lesen des persistenten CDC-Status schlägt fehl oder die Aktualisierung des persistenten Status schlägt fehl.
Beim Lesen der aktuellen LSN-Informationen aus der Quelldatenbank tritt ein Fehler auf.
Der gelesene CDC-Status ist nicht konsistent.
In all diesen Fällen meldet der CDC-Control-Task einen Fehler, der auf die standardmäßige Weise behandelt werden kann, mit der SSIS Steuerungsflussfehler behandelt.
Der CDC-Steuerungstask zeigt möglicherweise auch eine Warnung an, wenn der Get Processing Range-Vorgang direkt nach einem anderen Get Processing Range-Vorgang aufgerufen wird, ohne dass Mark Processed Range aufgerufen wird. Dies ist ein Anzeichen dafür, dass bei der vorherigen Ausführung ein Fehler aufgetreten ist oder dass möglicherweise ein anderes CDC-Paket ausgeführt wird und den gleichen CDC-Statusnamen verwendet.
Konfigurieren der CDC-Steuerungsaufgabe
Sie können Eigenschaften programmgesteuert oder mit dem SSIS-Designer festlegen.
In diesem Abschnitt
Verwandte Aufgaben
Definieren einer Statusvariablen
Aufgaben-Editor für CDC-Steuerungsaufgaben
Verwenden Sie das Dialogfeld Editor für CDC-Steuerungsaufgaben, um die CDC-Steuerungsaufgabe zu konfigurieren. Die Konfiguration der CDC-Steuerungsaufgabe umfasst die Definition einer Verbindung zur CDC-Datenbank, des CDC-Task-Vorgangs sowie der Informationen zur Statusverwaltung.
Weitere Informationen zum CDC-Steuerungstask finden Sie unter CDC Control Task.
Öffnen des CDC-Steuerungs-Aufgaben-Editors
Öffnen Sie in SQL Server Data Tools das SQL Server 2019 Integration Services (SSIS)-Paket, das den CDC-Steuerungsvorgang enthält.
Doppelklicken Sie auf der Registerkarte Control Flow auf den Task „CDC Control“.
Optionen
ADO.NET-Verbindungs-Manager für die SQL Server-CDC-Datenbank
Wählen Sie in der Liste einen vorhandenen Verbindungs-Manager aus, oder klicken Sie auf Neu , um eine neue Verbindung zu erstellen. Die Verbindung muss zu einer SQL Server -Datenbank hergestellt werden, die für CDC aktiviert ist und in der sich die ausgewählte Änderungstabelle befindet.
CDC-Steuerungsvorgang
Wählen Sie den Vorgang aus, der für diesen Task ausgeführt werden soll. Für alle Vorgänge wird die Statusvariable verwendet, die in einer SSIS-Paketvariable gespeichert wird, die den Status speichert und zwischen verschiedenen Komponenten im Paket übergibt.
Beginn des anfänglichen Ladevorgangs kennzeichnen: Dieser Vorgang wird verwendet, wenn der anfängliche Ladevorgang aus einer aktiven Datenbank ohne Momentaufnahme erfolgt. Er wird zu Beginn eines Pakets für das anfängliche Laden verwendet, um die aktuelle LSN in der Quelldatenbank aufzuzeichnen, bevor das Paket für das anfängliche Laden mit dem Lesen der Quelltabellen beginnt. Für diesen Vorgang ist eine Verbindung mit der Quelldatenbank erforderlich.
Wenn Sie bei Verwendung von SQL Server CDC (d.h. nicht Oracle) Beginn des anfänglichen Ladevorgangs kennzeichnen auswählen, muss der im Verbindungsmanager angegebene Benutzer entweder db_owner oder sysadmin sein.
Ende des anfänglichen Ladevorgangs kennzeichnen: Dieser Vorgang wird verwendet, wenn der anfängliche Ladevorgang aus einer aktiven Datenbank ohne Momentaufnahme erfolgt. Er wird am Ende eines Pakets zum anfänglichen Laden verwendet, um die aktuelle LSN in der Quelldatenbank aufzuzeichnen, nachdem das Paket für das anfängliche Laden das Lesen der Quelltabellen beendet hat. Diese LSN wird durch das Aufzeichnen des aktuellen Zeitpunkts, zu dem dieser Vorgang aufgetreten ist, und das anschließende Abfragen der
cdc.lsn_time_-Zuordnungstabelle in der CDC-Datenbank ermittelt. Dabei wird nach einer Änderung gesucht, die nach diesem Zeitpunkt aufgetreten ist.Wenn Sie bei Verwendung von SQL Server CDC (d.h. nicht Oracle) Ende des anfänglichen Ladevorgangs kennzeichnen auswählen, muss der im Verbindungsmanager angegebene Benutzer entweder db_owner oder sysadmin sein.
CDC-Start kennzeichnen: Dieser Vorgang wird verwendet, wenn der anfängliche Ladevorgang aus einer Momentaufnahmedatenbank oder einer inaktiven Datenbank erfolgt. Er wird an einem beliebigem Punkt im anfänglich geladenen Paket aufgerufen. Der Vorgang akzeptiert einen Parameter, bei dem es sich um eine Momentaufnahme-LSN oder den Namen einer Momentaufnahmedatenbank (von dem die Momentaufnahme-LSN automatisch abgeleitet wird) handeln kann. Der Parameter kann auch leer gelassen werden. In diesem Fall wird die aktuelle Datenbank-LSN als Start-LSN für das Änderungsverarbeitungspaket verwendet.
Dieser Vorgang wird anstelle der Vorgänge "Beginn/Ende des anfänglichen Ladevorgangs kennzeichnen" verwendet.
Wenn Sie bei Verwendung von SQL Server CDC (d.h. nicht Oracle) CDC-Start kennzeichnen auswählen, muss der im Verbindungsmanager angegebene Benutzer entweder db_owner oder sysadmin sein.
Verarbeitungsbereich abrufen: Dieser Vorgang wird in einem Änderungsverarbeitungspaket vor dem Aufrufen des Datenflusses verwendet, der den CDC-Quelldatenfluss verwendet. Dabei wird ein Bereich von LSNs festgelegt, den der CDC-Quelldatenfluss beim Aufruf liest. Der Bereich wird in einer SSIS-Paketvariablen gespeichert, die von der CDC-Quelle während der Datenflussverarbeitung verwendet wird.
Weitere Informationen zu den möglichen gespeicherten CDC-Zuständen finden Sie unter Definieren einer Zustandsvariablen.
Verarbeiteten Bereich kennzeichnen: Dieser Vorgang wird in einem Änderungsverarbeitungspaket am Ende einer CDC-Ausführung (nachdem der CDC-Datenfluss erfolgreich abgeschlossen wurde) verwendet, um die letzte LSN aufzuzeichnen, die vollständig in der CDC-Ausführung verarbeitet wurde. Bei der nächsten Ausführung von
GetProcessingRangebestimmt diese Position den Startpunkt für den nächsten Verarbeitungsbereich.CDC-Status zurücksetzen: Dieser Vorgang wird verwendet, um den beständigen CDC-Status zurückzusetzen, der dem aktuellen CDC-Kontext zugeordnet ist. Nachdem dieser Vorgang ausgeführt wurde, bildet die aktuell höchste LSN aus der Tabelle „LSN-timestamp“
sys.fn_cdc_get_max_lsnden Anfang des nächsten Verarbeitungsbereichs. Für diesen Vorgang ist eine Verbindung zur Quelldatenbank erforderlich.Dieser Vorgang wird z. B. verwendet, wenn Sie nur die neu erstellten Änderungsdatensätze verarbeiten und alle alten Änderungsdatensätze ignorieren möchten.
Variable, die den CDC-Status enthält
Wählen Sie die SSIS-Paketvariable aus, die die Statusinformationen für den Taskvorgang speichert. Sie sollten vor Beginn eine Variable definieren. Wenn Sie Automatische Statuspersistenzauswählen, wird die Statusvariable automatisch geladen und gespeichert.
Weitere Informationen zum Definieren der Statusvariable finden Sie unter Definieren einer Statusvariablen.
SQL Server-LSN zum Starten der CDC/Momentaufnahmenname:
Geben Sie die aktuelle Quelldatenbank-LSN oder den Namen der Snapshotdatenbank ein, aus der die initiale Ladung erfolgt, um festzulegen, wo CDC beginnt. Dies ist nur verfügbar, wenn der CDC-Steuerungsvorgang auf CDC-Start kennzeichnen festgelegt ist.
Weitere Informationen zu diesen Vorgängen finden Sie unter CDC Control Task.
Status automatisch in Datenbanktabelle speichern
Aktivieren Sie dieses Kontrollkästchen, damit der CDC-Steuerungstask das Laden und Speichern des CDC-Status in einer in der angegebenen Datenbank enthaltenen Statustabelle automatisch behandelt. Wird dieses Kontrollkästchen nicht aktiviert, muss der Entwickler den CDC-Status beim Start des Pakets laden und bei jeder Änderung des CDC-Status speichern.
Verbindungs-Manager für die Datenbank, in der der Status gespeichert wird
Wählen Sie in der Liste einen vorhandenen ADO.NET-Verbindungs-Manager aus, oder klicken Sie auf Neu, um eine neue Verbindung zu erstellen. Es handelt sich hierbei um eine Verbindung mit einer SQL Server -Datenbank, die die Statustabelle enthält. Die Statustabelle enthält die Statusinformationen.
Dieses Option ist nur verfügbar, wenn Automatische Statuspersistenz ausgewählt ist, und ist ein erforderlicher Parameter.
Tabelle zum Speichern des Status
Geben Sie den Namen der Statustabelle ein, die zum Speichern des CDC-Status verwendet werden soll. Die angegebene Tabelle muss zwei Spalten mit den Namen name und state enthalten, und beide Spalten müssen vom Datentyp varchar (256)sein.
Sie können optional Neu auswählen, um ein SQL-Skript abzurufen, das eine neue Statustabelle mit den erforderlichen Spalten erstellt. Bei Auswahl von Automatische Statuspersistenz muss der Entwickler eine den obigen Anforderungen entsprechende Statustabelle erstellen.
Dieses Option ist nur verfügbar, wenn Automatische Statuspersistenz ausgewählt ist, und ist ein erforderlicher Parameter.
Name des Zustands
Geben Sie einen Namen ein, der dem beständigen CDC-Status zugeordnet werden soll. Die Pakete für das vollständige Laden und die CDC-Pakete, die denselben CDC-Kontext verwenden, geben einen gemeinsamen Zustandsnamen an. Dieser Name wird zum Nachschlagen der Statuszeile in der Statustabelle verwendet.