Simulieren einer Fehlerausgabe für die Skriptkomponente
Zur automatischen Bearbeitung von Fehlerzeilen können Sie eine Ausgabe in der Skriptkomponente zwar nicht direkt als Fehlerausgabe konfigurieren, aber Sie können die Funktion einer integrierten Fehlerausgabe reproduzieren, indem Sie eine weitere Ausgabe erstellen und im Skript Bedingungslogik verwenden, um Zeilen gegebenenfalls an diese Ausgabe weiterzuleiten. Möglicherweise möchten Sie das Verhalten einer integrierten Fehlerausgabe imitieren, indem Sie zwei zusätzliche Ausgabespalten hinzufügen, sodass Sie die Fehlernummer und die ID der Spalte erhalten, in der der Fehler aufgetreten ist.
Wenn Sie die Fehlerbeschreibung hinzufügen möchten, die einem spezifischen vordefinierten Integration Services-Fehlercode entspricht, können Sie dazu die GetErrorDescription-Methode der IDTSComponentMetaData100-Schnittstelle verwenden. Diese wird über die ComponentMetaData-Eigenschaft der Skriptkomponente bereitgestellt.
Beispiel
Das hier dargestellte Beispiel verwendet eine Skriptkomponente, die als Transformation konfiguriert ist und über zwei synchrone Ausgaben verfügt. Der Zweck der Skriptkomponente besteht darin, Fehlerzeilen aus Adressdaten in der AdventureWorks-Beispieldatenbank herauszufiltern. Dieses fiktive Beispiel geht von der Annahme aus, dass wir eine Werbeaktion für Kunden in Nordamerika vorbereiten und dazu Adressen herausfiltern müssen, die sich nicht in Nordamerika befinden.
So konfigurieren Sie das Beispiel
Erstellen Sie einen Verbindungs-Manager, bevor Sie die neue Skriptkomponente erzeugen, und konfigurieren Sie eine Datenflussquelle, die Adressdaten aus der AdventureWorks-Beispieldatenbank herausfiltert. Für dieses Beispiel hat nur die Spalte CountryRegionName Bedeutung. Sie können einfach die Ansicht Person.vStateCountryProvinceRegion verwenden, oder Sie können Daten auswählen, indem Sie die Tabellen Person.Address, Person.StateProvince und Person.CountryRegion miteinander verknüpfen.
Fügen Sie der Datenfluss-Designeroberfläche eine neue Skriptkomponente hinzu, und konfigurieren Sie diese als Transformation. Öffnen Sie den Transformations-Editor für Skripterstellung.
Legen Sie auf der Seite Skript die ScriptLanguage-Eigenschaft auf die Skriptsprache fest, die Sie zum Codieren des Skripts verwenden möchten.
Klicken Sie auf Skript bearbeiten, um MicrosoftVisual Studio Tools for Applications (VSTA) zu öffnen.
Geben Sie den unten dargestellten Beispielcode in die Input0_ProcessInputRow-Methode ein, oder fügen Sie ihn ein.
Schließen Sie VSTA.
Wählen Sie auf der Seite Eingabespalten die Spalten aus, die Sie in der Skripttransformation verarbeiten möchten. In diesem Beispiel wird nur die CountryRegionName-Spalte verwendet. Verfügbare Eingabespalten, die Sie nicht auswählen, werden einfach unverändert im Datenfluss durchlaufen.
Fügen Sie auf der Seite Eingaben und Ausgaben eine neue, zweite Ausgabe hinzu, und legen Sie den entsprechenden SynchronousInputID-Wert auf die ID der Eingabe fest, die gleichzeitig auch der Wert der SynchronousInputID-Eigenschaft der Standardausgabe ist. Legen Sie die ExclusionGroup-Eigenschaft beider Ausgaben auf denselben Wert ungleich Null (z. B. 1) fest, um anzugeben, dass jede Zeile nur an eine der beiden Ausgaben weitergeleitet wird. Geben Sie der neuen Fehlerausgabe einen aussagekräftigen Namen, z. B. "MeineFehlerausgabe".
Fügen Sie der neuen Fehlerausgabe zusätzliche Ausgabespalten hinzu, um die gewünschten Fehlerinformationen aufzuzeichnen, zu denen zum Beispiel der Fehlercode, die ID der Spalte mit dem Fehler und möglicherweise die Fehlerbeschreibung zählen können. In diesem Beispiel werden die neuen Spalten, ErrorColumn und ErrorMessage, erstellt. Wenn Sie vordefinierte Integration Services-Fehler in Ihren eigenen Implementierungen erkennen, stellen Sie sicher, dass Sie eine ErrorCode-Spalte für die Fehlernummer hinzufügen.
Beachten Sie den ID-Wert der Eingabezeile oder -zeilen, die die Skriptkomponente auf Fehlerbedingungen untersucht. In diesem Beispiel wird dieser Spaltenbezeichner dazu verwendet, den ErrorColumn-Wert aufzufüllen.
Schließen Sie den Transformations-Editor für Skripterstellung.
Fügen Sie die Ausgaben der Skriptkomponente an geeignete Ziele an. Flatfileziele sind die einfachste Möglichkeit zur Konfiguration bei Ad-hoc-Tests.
Führen Sie das Paket aus.
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
If Row.CountryRegionName <> "Canada" _
And Row.CountryRegionName <> "United States" Then
Row.ErrorColumn = 68 ' ID of CountryRegionName column
Row.ErrorMessage = "Address is not in North America."
Row.DirectRowToMyErrorOutput()
Else
Row.DirectRowToOutput0()
End If
End Sub
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
if (Row.CountryRegionName!="Canada"&&Row.CountryRegionName!="United States")
{
Row.ErrorColumn = 68; // ID of CountryRegionName column
Row.ErrorMessage = "Address is not in North America.";
Row.DirectRowToMyErrorOutput();
}
else
{
Row.DirectRowToOutput0();
}
}
|