Behandeln von Fehlern in Daten
Wenn eine Datenflusskomponente eine Transformation auf Spaltendaten anwendet, Daten aus Quellen extrahiert oder Daten in Ziele lädt, können Fehler auftreten. Fehler treten häufig aufgrund unerwarteter Datenwerte auf. Beispielsweise tritt bei einer Datenkonvertierung ein Fehler auf, weil eine Spalte eine Zeichenfolge anstelle einer Zahl enthält. Beim Einfügen in eine Datenbankspalte kann ein Fehler auftreten, weil die Daten einen date-Datentyp und die Spalte einen numeric-Datentyp aufweist. Ein Ausdruck kann nicht ausgewertet werden, weil ein Spaltenwert Null ist, wodurch sich eine ungültige mathematische Operation ergibt.
Fehler können in der Regel einer der folgenden Kategorien zugeordnet werden:
Datenkonvertierungsfehler, die auftreten, wenn eine Konvertierung zum Verlust signifikanter Ziffern, zum Verlust insignifikanter Ziffern und zum Abschneiden von Zeichenfolgen führt. Datenkonvertierungsfehler treten außerdem auf, wenn die angeforderte Konvertierung nicht unterstützt wird.
Fehler bei der Ausdrucksauswertung. Sie treten auf, wenn Ausdrücke, die zur Laufzeit ausgewertet werden, ungültige Vorgänge ausführen oder aufgrund fehlender oder falscher Datenwerte syntaktisch falsch sind.
Suchfehler, die auftreten, wenn ein Suchvorgang keine Übereinstimmung in der Nachschlagetabelle findet.
Viele Datenflusskomponenten unterstützen Fehlerausgaben, mit denen Sie steuern können, wie die Komponente Fehler auf Zeilenebene in ein- und ausgehenden Daten behandelt. Sie geben das Verhalten der Komponente an, wenn Daten abgeschnitten werden oder ein Fehler auftritt, indem Sie Optionen für einzelne Spalten in der Eingabe oder Ausgabe festlegen. Beispielsweise können Sie angeben, dass bei der Komponente ein Fehler auftritt, wenn die Daten für den Kundennamen abgeschnitten werden, dass aber Fehler in einer anderen Spalte, die weniger wichtige Daten enthält, ignoriert werden.
Die Fehlerausgabe kann mit der Eingabe einer anderen Transformation verbunden werden oder in ein anderes Ziel als die Nichtfehlerausgabe geladen werden. Beispielsweise kann die Fehlerausgabe mit einer Transformation für abgeleitete Spalten verbunden werden, die eine Zeichenfolge für eine leere Spalte bereitstellt.
Im folgenden Diagramm wird ein einfacher Datenfluss mit einer Fehlerausgabe dargestellt.
Neben den Datenspalten enthält die Fehlerausgabe die Spalten ErrorCode und ErrorColumn. Die ErrorCode-Spalte identifiziert den Fehler, und die ErrorColumn-Spalte enthält den Herkunftsbezeichner der Fehlerspalte. Zum Anzeigen der Metadaten dieser Spalten klicken Sie auf den Pfad, der die Fehlerausgabe mit der nächsten Komponente im Datenfluss verbindet. Unter einigen Umständen wird der Wert der ErrorColumn-Spalte auf 0 festgelegt. Dies ist der Fall, wenn sich die Fehlerbedingung nicht auf eine einzelne Spalte, sondern auf die gesamte Zeile auswirkt. Beispielsweise tritt dies ein, wenn bei einer Suche in der Transformation für die Suche ein Fehler auftritt.
Weitere Informationen finden Sie unter Datenflusselemente und SQL Server Integration Services-Pfade.
Eine Liste der Fehler, Warnungen und anderen Meldungen von Integration Services finden Sie unter Fehler- und Meldungsreferenz von Integration Services.
Fehler- und Abschneideoptionen
Fehler können zwei Kategorien zugeordnet werden: Fehler oder Abschneiden von Daten. Ein Fehler ist ein Hinweis auf ein eindeutiges Problem, und es wird ein NULL-Ergebnis generiert. Hierzu zählen Fehler bei der Datenkonvertierung oder bei der Ausdrucksauswertung. Beispielsweise wird ein Fehler verursacht, wenn eine Zeichenfolge, die Buchstaben enthält, in eine Zahl konvertiert wird. Datenkonvertierungen, Auswertungen von Ausdrücken sowie Zuweisungen von Ausdrucksergebnissen zu Variablen, Eigenschaften und Datenspalten erzeugen aufgrund von unzulässigen Umwandlungen und inkompatiblen Datentypen möglicherweise einen Fehler. Weitere Informationen finden Sie unter CAST (SSIS), Implizite Datentypkonvertierung in Ausdrücken und SQL Server Integration Services-Datentypen.
Das Abschneiden von Daten ist nicht so schwerwiegend wie ein Fehler. Beim Abschneiden werden Ergebnisse generiert, die verwendbar oder sogar wünschenswert sind. Sie können das Abschneiden von Daten als Fehler oder als zulässige Bedingungen behandeln. Wenn Sie z. B. eine Zeichenfolge mit 15 Zeichen in eine Spalte einfügen, die nur eine Breite von einem Zeichen aufweist, können Sie festlegen, dass die Zeichenfolge abgeschnitten wird.
Sie können konfigurieren, wie Quellen, Transformationen und Ziele Fehler und das Abschneiden von Daten behandeln. In der folgenden Tabelle werden diese Optionen beschrieben.
Option |
Beschreibung |
---|---|
Fehler bei Komponente |
Bei einem Fehler oder beim Abschneiden von Daten wird der Datenflusstask nicht ausgeführt. Dies ist die Standardoption für einen Fehler und das Abschneiden von Daten. |
Fehler ignorieren |
Der Fehler oder das Abschneiden von Daten wird ignoriert, und die Datenzeile wird an die Ausgabe der Transformation oder Quelle weitergeleitet. |
Zeile umleiten |
Der Fehler oder das Abschneiden der Datenzeile wird an die Fehlerausgabe der Quelle, der Transformation oder des Zieles umgeleitet. |
Hinzufügen der Fehlerbeschreibung
Eine Fehlerausgabe stellt standardmäßig den numerischen Fehlercode bereit und enthält in der Regel den Bezeichner der Spalte, in dem der Fehler aufgetreten ist. Sie können die Skriptkomponente verwenden, um die Fehlerbeschreibung in einer zusätzlichen Spalte einzuschließen, indem Sie für den Aufruf der GetErrorDescription-Methode der IDTSComponentMetaData100-Schnittstelle eine einzelne Zeile des Skripts verwenden.
Die Skriptkomponente kann dem Fehlersegment des Datenflusses hinzugefügt werden, und zwar an eine beliebige Stelle unterhalb der Datenflusskomponenten, deren Fehler Sie erfassen möchten. In der Regel wird die Skriptkomponente jedoch eingefügt, kurz bevor die Fehlerzeilen in ein Ziel geschrieben werden. Auf diese Weise sucht das Skript nur nach Beschreibungen für geschriebene Fehlerzeilen. Beispielsweise korrigiert das Fehlersegment des Datenflusses u. U. einige Fehler und schreibt diese Zeilen nicht in ein Fehlerziel. Weitere Informationen finden Sie unter Erweitern einer Fehlerausgabe mit der Skriptkomponente.
So konfigurieren Sie eine Fehlerausgabe
|
Siehe auch