Verarbeiten von Einfügungen, Aktualisierungen und Löschungen
Im Datenfluss eines Integration Services-Pakets, das ein inkrementelles Laden von Änderungsdaten ausführt, werden mit dem zweiten Task Einfügungen, Aktualisierungen und Löschungen voneinander getrennt. Dann können Sie entsprechende Befehle verwenden, um sie für das Ziel zu übernehmen.
Hinweis |
---|
Der erste Task beim Entwerfen des Datenflusses eines Pakets, das ein inkrementelles Laden von Änderungsdaten ausführt, ist die Konfiguration der Quellkomponente, die die Abfrage ausführt, bei der die Änderungsdaten abgerufen werden. Weitere Informationen zu dieser Komponente finden Sie unter Abrufen und Verstehen der Änderungsdaten. Eine Beschreibung des Gesamtprozesses zur Erstellung eines Pakets, das ein inkrementelles Laden von Änderungsdaten ausführt, finden Sie unter Verbessern des inkrementellen Ladens mit Change Data Capture. Vollständige End-to-End-Beispiele zum Veranschaulichen der Verwendung von Change Data Capture in Paketen finden Sie unter Integration Services und Codeplex. |
Zuordnen von benutzerfreundlichen Werten zur Trennung von Einfügungen, Aktualisierungen und Löschungen
In der Beispielabfrage, bei der Änderungsdaten abgerufen werden, gibt die cdc.fn_cdc_get_net_changes_<capture_instance>-Funktion nur die Metadatenspalte mit der Bezeichnung __$operation zurück. Diese Metadatenspalte enthält einen Ordinalwert, der angibt, welcher Vorgang die Änderung verursacht hat.
Hinweis |
---|
Weitere Informationen zu der Abfrage, die die cdc.fn_cdc_get_net_changes_<capture_instance>-Funktion verwendet, finden Sie unter Erstellen der Funktion zum Abrufen der Änderungsdaten. |
Das Abgleichen eines Ordinalwerts mit seinem entsprechenden Vorgang ist nicht so einfach wie die Verwendung eines mnemonischen Codes des Vorgangs. Zum Beispiel kann 'D' leicht einen Löschvorgang und 'I' einen Einfügevorgang darstellen. Die Beispielabfrage, die im Thema Creating the Function to Retrieve the Change Data erstellt wurde, nimmt diese Konvertierung von einem Ordinalwert in einen benutzerfreundlichen Zeichenfolgenwert vor, der in einer neuen Spalte zurückgegeben wird. Das folgende Codesegment zeigt diese Konvertierung:
select
...
case __$operation
when 1 then 'D'
when 2 then 'I'
when 4 then 'U'
else null
end as CDC_OPERATION
Konfigurieren einer Transformation für bedingtes Teilen zur Weiterleitung von Einfügungen, Aktualisierungen und Löschungen
Die Transformation für bedingtes Teilen ist ideal zur Weiterleitung von Zeilen mit Änderungsdaten an eine von drei Ausgaben. Die Transformation überprüft den Wert der CDC_OPERATION-Spalte in jeder Zeile und bestimmt, ob diese Änderung eine Einfügung, Aktualisierung oder Löschung war.
Hinweis |
---|
Die Spalte CDC_OPERATION enthält einen benutzerfreundlichen vom numerischen Wert in der __$operation-Spalte abgeleiteten Zeichenfolgenwert. |
So teilen Sie Einfügungen, Aktualisierungen und Löschungen zur Verarbeitung durch Verwendung einer Transformation für bedingtes Teilen
Fügen Sie auf der Registerkarte Datenfluss eine Transformation für bedingtes Teilen hinzu.
Verbinden Sie die Ausgabe der OLE DB-Quelle mit der Transformation für bedingtes Teilen.
Geben Sie im Transformations-Editor für bedingtes Teilen im unteren Bereich des Editors die folgenden drei Zeilen ein, um die drei Ausgaben zu bestimmen
Geben Sie eine Zeile mit der Bedingung CDC_OPERATION == "I" ein, um eingefügte Zeilen an die Ausgabe für Einfügungen weiterzuleiten.
Geben Sie eine Zeile mit der Bedingung CDC_OPERATION == "U" ein, um aktualisierte Zeilen an die Ausgabe für Aktualisierungen weiterzuleiten.
Geben Sie eine Zeile mit der Bedingung CDC_OPERATION == "D" ein, um gelöschte Zeilen an die Ausgabe für Löschungen weiterzuleiten.
Nächster Schritt
Nachdem Sie die Zeilen zur Verarbeitung geteilt haben, besteht der nächste Schritt darin, die Änderungen auf das Ziel anzuwenden.
Nächstes Thema:Anwenden der Änderungen auf das Ziel
|