Beim Laden von Daten mittels SSIS ist es oftmals nötigt, den FlatFile-Verbindungs Manager anzuwenden, um Daten aus einer Textdatei auszulesen. Hierbei können während des Beladungsprozesses eines Flatfiles im SSIS 2012 allerdings Probleme auftreten. Beispielsweise, wenn fehlerhafte Datenzeilen im Flatfile vorhanden sind und eine Fehlerausgabe konfiguriert wurde.
In diesem Beispiel beinhaltet Die csv-Datei folgenden Werte:
CustomerID |
ThreadID |
ServerID |
SessionID |
1020 |
5 |
SV520 |
2 |
5002 |
3 |
SV380 |
|
500 |
4 |
SV7203 |
3 |
|
Als Trennzeichen für die Spalten fungiert ein Komma und ein CRLF als Zeilenende.
Im SSIS 2008 R2 wurde spaltenweise nach einem Trennzeichen gesucht. Falls in einer Spalte nun ein Trennzeichen fehlt, lief man in die Gefahr, dass die nächste Spalte (in unserem Beispiel die nächste Datenzeile) direkt mit angehängt wurde (vorausgesetzt der Datentyp passt).
CustomerID |
ThreadID |
ServerID |
SessionID |
1020 |
5 |
SV520 |
2 |
5002 |
3 |
SV380500 |
4,SV7203,3 |
|
Um dieses Problem zu umgehen, ist im SSIS 2012 eine neue Funktionalität vorhanden, die nach Trennzeichen am Ende jeder Datenzeile sucht. Diese Funktion heißt AlwaysCheckForRowDelimiters und ist per Default auf True gesetzt.
In der zweiten Datenzeile fehlt die Trennung per Komma, so dass üblicherweise die SessionID als NULL interpretiert wird, da kein Spaltentrennzeichen vorhanden ist.
Wenn allerdings fehlerhafte Datenzeilen auftreten, in denen der Wert der Spalte über mehrere Zeilen geht und kein Zeilentrennzeichen vorhanden ist, läuft der Prozess ohne Ergebnis ins Leere. Selbst die Konfiguration einer Fehlerausgabe führt zu keinem Erfolg. Im unteren Beispiel sieht man eine Datenzeile, die korrekt ist und auch als solche erkannt wird. Die nächste Datenzeile ist deutlich länger, daher wird sie in diesem Beispiel mit (…) abgekürzt.
SV085489|2008-03-04 16:43:37.673575|8|{44270bee-0815-46ca-ba7f-96375c7f1c66}|oy5kay55su2mkgr1pvclrmy4|End|https://sample.intranet.musterag.com/SampleApp/Samplect/main/CTFRONTPAGE.aspx
SV085489|2008-03-04 16:43:37.673575|8|{ad5e0a51-0765-4e51-a333-fbaa591e24b2}|oy5kay55su2mkgr1pvclrmy4|Start|https://sample.intranet.musterag.com/SampleApp/SampleCT/Main/SessionErrorPage.aspx?ErrorMessage= Incorrect Software Version For this Branch&lblFullVersion=
ctlLeftWindow (…)
Um dieses Problem zu umgehen ist es nötig, dass die Eigenschaft im Flatfile Verbindungs-Manager AlwaysCheckForRowDelimiters auf False gesetzt wird (was eigentlich nicht Sinn der Sache ist). Dann funktioniert auch die Fehlerausgabe. In diesem Fall werden die fehlerhaften Datenzeilen, auch aufgrund z.B. fehlender Zeilentrennzeichen, korrekt interpretiert.
Im SSIS 2012 ist die neue Funktion implementiert worden, um Probleme zu beheben,die auftreten, sobald kein Zeilentrennzeichen vorhanden ist. Offenbar ist es aber so, dass bei längeren Datenzeilen der SSIS 2012 damit noch nicht umgehen kann, so dass man sich mit dem oben beschriebenen Workaround behelfen muss.
Siehe weitere Infos:
Sie sehen gerade einen Platzhalterinhalt von Facebook. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr InformationenSie sehen gerade einen Platzhalterinhalt von Instagram. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr InformationenSie sehen gerade einen Platzhalterinhalt von X. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr Informationen