2009-07-01 2 views
1

Mein SSIS-Programm wird als Eingabe aus einer CSV-Datei gelesen.SSIS Problem beim Lesen aus der Einfachdatei

Die Datei hat ungefähr 60.000 Zeilen. Und mein SSIS-Paket schlägt während des Lesevorgangs fehl und sagt, dass eine bestimmte Spalte aufgrund eines möglichen Datenverlusts nicht konvertiert werden kann.

Jetzt bin ich sicher, dass die Mehrheit der Zeilen korrekt sind. Da ich versucht habe, zufällige Teilmenge der Datei zu kleben und das SSIS liest sich gut.

Aber ich kann keinen Weg finden, um genau zu bestimmen, auf welcher Linie mein Paket fehlgeschlagen ist.

Ich habe 2 Monate auf dieses Problem, einen Ratschlag?

Antwort

5

Sie könnten den ersten Schuldigen mit 16 Iterationen herausfinden. Hier ist eine Brain + Brawn-Methode:

Erstens: Zurück alles. Erstellen Sie Sicherungskopien an sicheren Orten. Entschuldigen Sie das offensichtliche, aber ich bin kürzlich gebissen worden, und ich kenne besser.

Die Datei mit 60K-Datensätzen - nennen wir dies Ihre Basisdatei.

  1. Split Basisdatei in zwei Dateien (FileA, FileB)
  2. Verwenden einer von ihnen als Eingabe.
  3. Run SSIS - wenn SSIS ausfällt, Verwendung FileA als Basisdatei - sonst Verwendung FileB als Basisdatei
  4. Gehen Sie zu Schritt 1

Sie den problematischen Datensatz am 16. Iteration haben. (60k, 30k, 15k, 7500, 3750, 1875, 937, 468, 234, 117, 58, 29, 14, 7, 3, 1)

Melden Sie sich für alles an und führen Sie das SSIS-Paket erneut aus. Sie sollten den fehlerhaften Datensatz in der Basisdatei und den genauen Datenpunkt im Protokoll haben.

0

Zuerst vereinfachen Sie das Problem. Erstellen Sie einen Datenflusstask, der nur diese einfache Dateiquelle und ein Dummy-Ziel verwendet. Sieh zu, dass das scheitert

Aktivieren Sie die gesamte Protokollierung und blättern Sie durch die Protokolle. Deaktivieren Sie die Protokollierungsbereiche, die offensichtlich wertlos sind, und führen Sie sie erneut aus.

Außerdem sollten Sie die Fehlerausgabe der Quelle und/oder des Ziels konfigurieren: Welcher auch immer Sie den Fehler gibt. Senden Sie die fehlerhafte Zeile an ein separates Ziel, das Sie nach dem Lauf ansehen können.

0

Die meiste Zeit, als ich über diese hinweggekommen bin, war es das Ergebnis von entweder Daten, die länger als erwartet waren (dh Versuch, eine Zeichenfolge mit 60 Zeichen in ein varchar (50) Feld zu passen), oder es war eine Zahl wo Genauigkeit könnte verloren gehen (dh ein 26.5 in ein ganzzahliges Feld oder 26.55 in ein Zahlenfeld passen, das nur eine Dezimalstelle erlaubt).

0

Sets DefaultBufferMaxRows = 1

Dies wird jede Zeile one-by-one lesen und verarbeiten und auf der Zeile nicht, dass es mit Conversions Fragen hat das.

Sie müssen dies nicht manuell durch Austeilen der Datei tun.