Hinzufügen der Fehlerflussumleitung

Aktualisiert: 17. Juli 2006

Wie in der vorhergehenden Aufgabe gezeigt, kann von der Lookup Currency Key-Transformation keine Übereinstimmung generiert werden, wenn von der Transformation versucht wird, die beschädigte Beispielflatfile zu verarbeiten, die einen Fehler produziert hat. Da die Transformation die Standardeinstellungen für die Fehlerausgabe verwendet, führt jeder Fehler dazu, dass die Transformation fehlschlägt. Wenn die Transformation fehlschlägt, schlägt auch der Rest des Pakets fehl.

Anstatt ein Fehlschlagen der Transformation zuzulassen, können Sie die Komponente so konfigurieren, dass die fehlerverursachende Zeile mithilfe der Fehlerausgabe in einen anderen Verarbeitungspfad umgeleitet wird. Die Verwendung eines separaten Fehlerverarbeitungspfades gibt Ihnen die Möglichkeit, mehrere Vorgänge auszuführen. Sie können beispielsweise die Daten säubern und dann die fehlerhafte Zeile erneut verarbeiten. Oder Sie speichern die fehlerhafte Zeile zusammen mit zusätzlichen Fehlerinformationen zum späteren Überprüfen und erneutem Verarbeiten.

In dieser Aufgabe konfigurieren Sie die Lookup Currency Key-Transformation so, dass alle fehlerverursachenden Zeilen in die Fehlerausgabe umgeleitet werden. In der Fehlerverzweigung des Datenflusses werden diese Zeilen in eine Datei geschrieben.

Standardmäßig enthalten die beiden zusätzlichen Spalten in einer Integration Services-Fehlerausgabe (ErrorCode und ErrorColumn) nur numerische Codes, die eine Fehlernummer darstellen, und die ID der Spalte, in der der Fehler auftrat. Diese numerischen Werte sind ohne die entsprechende Fehlerbeschreibung nur von begrenztem Nutzen.

Um die Nützlichkeit der Fehlerausgabe zu verbessern, werden Sie mithilfe einer Skriptkomponente auf die Integration Services-API zugreifen und eine Beschreibung des Fehlers abrufen, bevor das Paket die fehlerverursachenden Zeilen in die Datei schreibt.

So konfigurieren Sie eine Fehlerausgabe

  1. Erweitern Sie in der Toolbox die Datenflusstransformationen, und ziehen Sie dann Skriptkomponente auf die Entwurfsoberfläche der Registerkarte Datenfluss. Legen Sie Skript rechts von der Lookup Currency Key-Transformation ab.

  2. Klicken Sie im Dialogfeld Skriptkomponententyp auswählen auf Transformation, und klicken Sie dann auf OK.

  3. Klicken Sie auf die Lookup Currency Key-Transformation, und ziehen Sie dann den roten Pfeil auf die neu hinzugefügte Skripttransformation, um die zwei Komponenten zu verbinden.

    Der rote Pfeil stellt die Fehlerausgabe der Lookup Currency Key-Transformation dar. Indem Sie den roten Pfeil zum Verbinden der Transformation mit der Skriptkomponente verwenden, können Sie alle Verarbeitungsfehler in die Skriptkomponente umleiten. Diese verarbeitet dann die Fehler und sendet sie an das Ziel.

  4. Wählen Sie im Dialogfeld Fehlerausgabe konfigurieren in der Fehler-Spalte Zeile umleiten aus, und klicken Sie dann auf OK.

  5. Klicken Sie auf der Datenfluss-Entwurfsoberfläche mit der rechten Maustaste auf die neu hinzugefügte Skripttransformation, klicken Sie auf Umbenennen, und ändern Sie den Namen in Get Error Description.

  6. Doppelklicken Sie auf die Get Error Description-Transformation.

  7. Wählen Sie im Dialogfeld Transformations-Editor für Skripterstellung auf der Seite Eingabespalten die ErrorCode-Spalte aus.

  8. Erweitern Sie auf der Seite Eingaben und Ausgaben das Element Ausgabe 0, klicken Sie auf Ausgabespalten, und klicken Sie dann auf Spalte hinzufügen.

  9. Geben Sie in der Name-Eigenschaft den Namen ErrorDescription ein, und legen Sie die DataType-Eigenschaft auf string [DT_WSTR] fest.

  10. Überprüfen Sie auf der Seite Skript, ob die LocaleID-Eigenschaft auf Englisch (USA) festgelegt ist.

  11. Klicken Sie auf Skript entwerfen, um die Skriptumgebung von Visual Studio für Applikationen (VSA) zu öffnen. Geben Sie den folgenden Code in die Input0_ProcessInputRow-Methode ein, oder fügen Sie ihn mit Kopieren und Einfügen ein.

    Row.ErrorDescription =

    Me.ComponentMetaData.GetErrorDescription(Row.ErrorCode)

    Die fertige Unterroutine sieht wie der folgende Code aus.

    Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)

    Row.ErrorDescription =

    Me.ComponentMetaData.GetErrorDescription(Row.ErrorCode)

    End Sub

  12. Klicken Sie im Menü Datei auf Schließen und zurück, um die VSA IDE und das Dialogfeld Script Transformation Editor zu schließen.

  13. Klicken Sie auf OK.

Nächste Schritte

Hinzufügen eines Flatfileziels