Anwenden der Änderungen auf das Ziel
Gilt für: SQL Server SSIS Integration Runtime in Azure Data Factory
Im Datenfluss eines Integration Services -Pakets, das ein inkrementelles Laden von Änderungsdaten ausführt, ist der dritte und letzte Task die Anwendung der Änderungen auf Ihr Ziel. Sie benötigen jeweils eine Komponente, um Einfügungen, Updates und Löschungen anzuwenden.
Hinweis
Der zweite Task beim Entwerfen des Datenflusses eines Pakets, das ein inkrementelles Laden von Änderungsdaten ausführt, ist die Trennung von Einfügungen, Updates und Löschungen. Weitere Informationen zu dieser Komponente finden Sie unter Verarbeiten von Einfügungen, Updates und Löschungen. Eine Beschreibung des Gesamtprozesses zur Erstellung eines Pakets, das ein inkrementelles Laden von Änderungsdaten ausführt, finden Sie unter Change Data Capture (SSIS).
Anwenden von Einfügungen
Zum Anwenden von Einfügungen verwenden Sie ein OLE DB-Ziel, da die neuen Zeilen keine besondere Behandlung erfordern.
So verarbeiten Sie Einfügungen mit einem OLE DB-Ziel
Fügen Sie auf der Registerkarte Datenfluss ein OLE DB-Ziel hinzu.
Verbinden Sie die Ausgabe, die Einfügungen aus der Transformation für bedingtes Teilen enthält, mit dem OLE DB-Ziel.
Aktivieren Sie im Ziel-Editor für OLE DBauf der Seite Verbindungs-Manager die folgenden Optionen:
Wählen Sie einen OLE DB-Verbindungs-Manager für die Zieldatenbank aus oder erstellen Sie einen.
Wählen Sie eine Option für den Datenzugriffsmodus aus, und wählen Sie dann die Zieltabelle aus, oder geben Sie eine SQL-Anweisung mit den Zielspalten ein.
Ordnen Sie auf der Seite Zuordnungen des Editors die entsprechenden Spalten von den Änderungsdaten der Zieltabelle zu.
Anwenden von Updates
Zum Anwenden von Updates verwenden Sie eine Transformation für OLE DB-Befehl. Sie verwenden diese Transformation, da Sie eine parametrisierte UPDATE-Anweisung verwenden müssen, um jeweils eine Zeile mit den neuen Spaltenwerten zu aktualisieren.
Hinweis
Sie können auch Zielkomponenten verwenden, um Updates anzuwenden. Bei dieser Vorgehensweise verwenden Sie die Zielkomponenten, um die Zeilen in temporäre Tabellen zu speichern, die Sie für diesen Zweck erstellen. Sie verwenden dann Tasks "SQL Ausführen", um Massenupdates und Massenlöschungen auf dem Ziel von den temporären Tabellen auszuführen.
So verarbeiten Sie Updates mit einer Transformation für OLE DB-Befehl
Fügen Sie auf der Registerkarte Datenfluss eine Transformation für OLE DB-Befehl hinzu.
Verbinden Sie die Ausgabe, die Updates aus der Transformation für bedingtes Teilen enthält, mit der Transformation für OLE DB-Befehl.
Wählen Sie auf der Registerkarte Verbindungs-Managerim Erweiterten Editor für OLE DB-Befehl für die Zieldatenbank einen OLE DB-Verbindungs-Manager aus, oder erstellen Sie einen.
Geben Sie auf der Registerkarte Komponenteneigenschaftenim Erweiterten Editor für OLE DB-Befehl für SqlCommandeine parametrisierte UPDATE-Anweisung ein.
Zum Beispiel könnte eine UPDATE-Anweisung für eine Customer-Tabelle die folgende Syntax aufweisen:
update CDCSample.Customer set TerritoryID = ?, CustomerType = ?, rowguid = ?, ModifiedDate = ? where CustomerID = ?
Ordnen Sie auf der Registerkarte Spaltenzuordnungen des Editors den Parametern in der UPDATE-Anweisung die entsprechenden Spalten von den Änderungsdaten zu.
Anwenden von Löschungen
Zum Anwenden von Löschungen verwenden Sie eine Transformation für OLE DB-Befehl. Sie verwenden diese Transformation, da Sie eine parametrisierte DELETE-Anweisung verwenden müssen, die jeweils eine einzelne Zeile löscht, die auf dem Spaltenwert basiert, der die Zeile eindeutig identifiziert.
Hinweis
Sie können auch Zielkomponenten verwenden, um Löschungen anzuwenden. Bei dieser Vorgehensweise verwenden Sie die Zielkomponenten, um die Zeilen in temporäre Tabellen zu speichern, die Sie für diesen Zweck erstellen. Sie verwenden dann Tasks "SQL Ausführen", um Massenupdates und Massenlöschungen auf dem Ziel von den temporären Tabellen auszuführen.
So verarbeiten Sie Löschungen mit einer Transformation für OLE DB-Befehl
Fügen Sie auf der Registerkarte Datenfluss eine Transformation für OLE DB-Befehl dem Datenfluss hinzu.
Verbinden Sie die Ausgabe, die Löschungen aus der Transformation für bedingtes Teilen enthält, mit der Transformation für OLE DB-Befehl.
Öffnen Sie den erweiterten Editor, um die Transformation zu konfigurieren.
Wählen Sie auf der Registerkarte Verbindungs-Managerim Erweiterten Editor für OLE DB-Befehl für die Zieldatenbank einen OLE DB-Verbindungs-Manager aus, oder erstellen Sie einen.
Geben Sie im Erweiterten Editor für OLE DB-Befehlauf der Registerkarte Komponenteneigenschaften des Editors für SqlCommandeine parametrisierte DELETE-Anweisung ein.
Zum Beispiel könnte eine DELETE-Anweisung für eine Customer-Tabelle die folgende Syntax aufweisen:
delete from Customer where CustomerID = ?
Ordnen Sie auf der Registerkarte Spaltenzuordnungen des Editors die entsprechende Spalte von den Änderungsdaten dem Parameter in der DELETE-Anweisung zu.
Optimieren von Einfügungen und Updates mithilfe der MERGE-Funktionalität
Sie können die Verarbeitung von Einfügungen und Updates optimieren, indem Sie bestimmte Change Data Capture-Optionen mit der Verwendung des Transact-SQL-MERGE-Schlüsselworts kombinieren. Weitere Informationen zum MERGE-Schlüsselwort finden Sie unter MERGE (Transact-SQL).
In der Transact-SQL-Anweisung, mit der die Änderungsdaten abgerufen werden, können Sie all with merge als den Wert des row_filter_option-Parameters festlegen, wenn Sie die cdc.fn_cdc_get_net_changes_<capture_instance>-Funktion aufrufen. Diese Change Data Capture-Funktion arbeitet effizienter, wenn sie nicht die zusätzliche Verarbeitung ausführen muss, die erforderlich ist, um Einfügungen von Updates zu unterscheiden. Wenn Sie den all with merge -Parameterwert angeben, ist der __$operation -Wert der Änderungsdaten 1 für Löschungen oder 5 für Änderungen, die durch Einfügungen oder Updates verursacht wurden. Weitere Informationen zur Transact-SQL-Funktion, die zum Abrufen der Änderungsdaten verwendet wird, finden Sie unter Abrufen und Verstehen der Änderungsdaten. Nachdem Sie Änderungen mit dem all with merge -Parameterwert abgerufen haben, können Sie Löschungen anwenden und die übrigen Zeilen in eine temporäre Tabelle oder eine Stagingtabelle ausgeben. Sie können dann in einem Downstream-Task 'SQL Ausführen' eine einzelne MERGE-Anweisung verwenden, um alle Einfügungen oder Updates aus der Stagingtabelle auf das Ziel anzuwenden.