Anwenden der Änderungen auf das Ziel

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, Aktualisierungen und Löschungen anzuwenden.

HinweisHinweis

Der zweite Task beim Entwerfen des Datenflusses eines Pakets, das ein inkrementelles Laden von Änderungsdaten ausführt, ist die Trennung von Einfügungen, Aktualisierungen und Löschungen. Weitere Informationen zu dieser Komponente finden Sie unter Verarbeiten von Einfügungen, Aktualisierungen und Löschungen. 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.

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

  1. Fügen Sie auf der Registerkarte Datenfluss ein OLE DB-Ziel hinzu.

  2. Verbinden Sie die Ausgabe, die Einfügungen aus der Transformation für bedingtes Teilen enthält, mit dem OLE DB-Ziel.

  3. Aktivieren Sie im Ziel-Editor für OLE DB auf der Seite Verbindungs-Manager die folgenden Optionen:

    1. Wählen Sie einen OLE DB-Verbindungs-Manager für die Zieldatenbank aus oder erstellen Sie einen.

    2. 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.

  4. Ordnen Sie auf der Seite Zuordnungen des Editors die entsprechenden Spalten von den Änderungsdaten der Zieltabelle zu.

Anwenden von Aktualisierungen

Zum Anwenden von Aktualisierungen 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.

HinweisHinweis

Sie können auch Zielkomponenten verwenden, um Aktualisierungen 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 SQL Ausführen-Tasks, um Massenaktualisierungen und Massenlöschungen auf dem Ziel von den temporären Tabellen auszuführen.

So verarbeiten Sie Aktualisierungen mit einer Transformation für OLE DB-Befehl

  1. Fügen Sie auf der Registerkarte Datenfluss eine Transformation für OLE DB-Befehl hinzu.

  2. Verbinden Sie die Ausgabe, die Aktualisierungen aus der Transformation für bedingtes Teilen enthält, mit der Transformation für OLE DB-Befehl.

  3. Wählen Sie auf der Registerkarte Verbindungs-Manager im Erweiterten Editor für OLE DB-Befehl für die Zieldatenbank einen OLE DB-Verbindungs-Manager aus, oder erstellen Sie einen.

  4. Geben Sie auf der Registerkarte Komponenteneigenschaften im Erweiterten Editor für OLE DB-Befehl für SqlCommand eine 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 = ?
    
  5. 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.

HinweisHinweis

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 Massenaktualisierungen 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

  1. Fügen Sie auf der Registerkarte Datenfluss eine Transformation für OLE DB-Befehl dem Datenfluss hinzu.

  2. Verbinden Sie die Ausgabe, die Löschungen aus der Transformation für bedingtes Teilen enthält, mit der Transformation für OLE DB-Befehl.

  3. Öffnen Sie den erweiterten Editor, um die Transformation zu konfigurieren.

  4. Wählen Sie auf der Registerkarte Verbindungs-Manager im Erweiterten Editor für OLE DB-Befehl für die Zieldatenbank einen OLE DB-Verbindungs-Manager aus, oder erstellen Sie einen.

  5. Geben Sie im Erweiterten Editor für OLE DB-Befehl auf der Registerkarte Komponenteneigenschaften des Editors für SqlCommand eine 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 = ?
    
  6. 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 Aktualisierungen mithilfe der MERGE-Funktionalität

Sie können die Verarbeitung von Einfügungen und Aktualisierungen 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 Aktualisierungen 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 Aktualisierungen 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 Aktualisierungen aus der Stagingtabelle auf das Ziel anzuwenden.

Integration Services (kleines Symbol) Bleiben Sie mit Integration Services auf dem neuesten Stand

Die neuesten Downloads, Artikel, Beispiele und Videos von Microsoft sowie ausgewählte Lösungen aus der Community finden Sie auf der Integration Services-Seite von MSDN oder TechNet:

Abonnieren Sie die auf der Seite verfügbaren RSS-Newsfeeds, um automatische Benachrichtigungen zu diesen Aktualisierungen zu erhalten.