2010-08-27 3 views
10

Ich entwickle ein SSIS-Paket, versuchen, eine vorhandene SQL-Tabelle aus einer CSV-Flat-Datei zu aktualisieren. Alle Spalten werden erfolgreich aktualisiert, außer für eine Spalte. Wenn ich diese Spalte beim Abschneiden ignoriere, wird mein Paket erfolgreich abgeschlossen. Also ich weiß, dass dies ein abgeschnittenes Problem und kein Fehler ist.SSIS-Text wurde mit Statuswert 4 abgeschnitten 0

Diese Spalte ist für fast jede Zeile leer. Es gibt jedoch einige Zeilen, in denen dieses Feld 200-300 Zeichen enthält. Meine Datenkonvertierungsaufgabe hat dieses Feld als DT_WSTR identifiziert, aber von dem, was ich an anderer Stelle gelesen habe, sollte dies DT_NTEXT sein. Ich habe beide ausprobiert und habe sogar den DT_WSTR auf 500 gesetzt. Aber das alles hat mein Problem nicht behoben. Wie kann ich reparieren? Welchen Datentyp sollte diese Spalte in meiner SQL-Tabelle haben?

Error: 0xC02020A1 at Data Flow Task 1, Source - Berkeley812_csv [1]: Data conversion failed. The data conversion for column "Reason for Delay in Transition" returned status value 4 and status text "Text was truncated or one or more characters had no match in the target code page.". 
Error: 0xC020902A at Data Flow Task 1, Source - Berkeley812_csv [1]: The "output column "Reason for Delay in Transition" (110)" failed because truncation occurred, and the truncation row disposition on "output column "Reason for Delay in Transition" (110)" specifies failure on truncation. A truncation error occurred on the specified object of the specified component. 
Error: 0xC0202092 at Data Flow Task 1, Source - Berkeley812_csv [1]: An error occurred while processing file "D:\ftproot\LocalUser\RyanDaulton\Documents\Berkeley Demographics\Berkeley812.csv" on data row 758. 

Antwort

10

Ich vermute, die oder ein oder mehrere Zeichen in der Zielcodepage Teil des Fehlers kein Spiel hatte.

Wenn Sie die Zeilen mit Werten in dieser Spalte entfernen, wird sie geladen? Können Sie mit anderen Worten die Zeilen identifizieren, die zum Ausfall des Pakets führen? Es könnte sein, dass die Daten zu lang sind, oder es könnte sein, dass es einige funky Zeichen gibt, die SQL Server nicht mag.

+1

Beth, wie ich oben sagte, wenn ich Kürzungen für diese eine Spalte ignorierte, dann wurden alle diese Datensätze aktualisiert. – salvationishere

+0

OK, also haben Sie sich die Zeilen angesehen und sehen nichts Ungewöhnliches an ihnen. Es könnte stattdessen die Länge sein. Können Sie die Daten aus einer der fehlerhaften Zeilen manuell in die Tabelle kopieren? Es könnte Ihnen eine aussagekräftigere Fehlermeldung geben. – Beth

+0

Wie würde ich für diese fehlerhaften Zeilen Daten aus Excel nach SQL kopieren? – salvationishere

20

Ein möglicher Grund für diesen Fehler ist, dass Ihr Begrenzungszeichen (Komma, Semikolon, Pipe, was auch immer) tatsächlich in den Daten in einer Spalte erscheint. Dies kann zu sehr irreführenden Fehlermeldungen führen, oft mit dem Namen einer völlig anderen Spalte.

Eine Möglichkeit, dies zu überprüfen, besteht darin, die "schlechten" Zeilen in eine separate Datei umzuleiten und sie dann manuell zu überprüfen. Hier ist eine kurze Erklärung, wie das zu tun:

http://redmondmag.com/articles/2010/04/12/log-error-rows-ssis.aspx

Wenn das in der Tat ist Ihr Problem, dann ist die beste Lösung ist, die Dateien an der Quelle zu beheben, die Datenwerte und/oder verwenden Sie eine andere delimeter zu zitieren das ist nicht in den Daten.

+0

Danke, aber mein Manager hat mir gerade mitgeteilt, dass wir diese Tabelle/Datei nicht mehr brauchen! – salvationishere

+0

Wenn Sie SSMS zum Exportieren und dann zum Importieren der Daten verwenden, stellen Sie sicher, dass Sie [in Anführungszeichen gesetzte Bezeichner verwenden, damit dieser Fehler verschwindet] (http://stackoverflow.com/a/10677148/175679). – SliverNinja

1

In meinem Fall hatten einige meiner Zeilen nicht die gleiche Anzahl von Spalten wie der Header. Beispiel, Header hat 10 Spalten und eine Ihrer Zeilen hat 8 oder 9 Spalten. (Spalten = Zählen Sie die Anzahl der Trennzeichen in jeder Zeile)

13

Ich hatte dieses Problem bereits, wahrscheinlich ist die Standardspaltengröße für die Datei falsch. Es wird eine Standardgröße von 50 Zeichen eingegeben, aber die Daten, mit denen Sie arbeiten, sind größer. Ändern Sie in den erweiterten Einstellungen für Ihre Datendatei die Spaltengröße von 50 auf die Spaltengröße der Tabelle.

3

Wenn dies vom SQL Server-Importassistenten stammt, versuchen Sie, die Definition der Spalte in der Datenquelle zu bearbeiten. Sie beträgt standardmäßig 50 Zeichen, kann jedoch länger sein.

Data Soruce -> Advanced -> Look at the column that goes in error -> change OutputColumnWidth to 200 and try again.

0

Wenn alle anderen Möglichkeiten versagt haben, versuchen, die Datenimport Aufgabe neu zu erstellen und/oder den Verbindungs-Manager. Wenn Sie seit der ursprünglichen Erstellung der Aufgabe Änderungen vorgenommen haben, kann dies manchmal der Fall sein. Ich weiß, es ist das Äquivalent zum Neustart, aber, hey, wenn es funktioniert, funktioniert es.

Verwandte Themen