SSIS-Fehler für abgeleitete Spalten
Bekam ich diese Fehlermeldung beim Debuggen von SSIS:
Fehler: 0xC0049064 bei Datenflusstask, Abgeleitete Spalte [70]: Ein Fehler ist aufgetreten, während der Versuch, eine Typumwandlung.
Fehler: 0xC0209029 bei Datenflusstask, Abgeleitete Spalte [70]: SSIS-Fehler Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR. Die "Komponente "Abgeleitete Spalte" (70)" ist fehlgeschlagen, da Fehler-code 0xC0049064 aufgetreten, und der Fehler Zeile disposition auf "output-Spalte "EVENT_DT" (118)" gibt den Fehler an Fehler. Ein Fehler ist aufgetreten, der auf die angegebenen Objekt der angegebenen Komponente. Hier kann es zu Fehlermeldungen geschrieben werden, bevor diese mit mehr Informationen über den Fehler.
Fehler: 0xC0047022 bei Datenflusstask: SSIS-Fehlercode DTS_E_PROCESSINPUTFAILED. Die ProcessInput-Methode auf die Komponente "Abgeleitete Spalte" (70) failed with error code 0xC0209029. Die identifizierte Komponente hat einen Fehler zurückgegeben von der ProcessInput-Methode. Der Fehler ist spezifisch für die Komponente, aber der Fehler ist fatal und führen die Daten-Fluss-Vorgang zu beenden. Hier kann es zu Fehlermeldungen geschrieben werden, bevor diese mit mehr Informationen über den Fehler.
Fehler: 0xC0047021 bei Datenflusstask: SSIS-Fehlercode DTS_E_THREADFAILED. Thread "WorkThread0" beendet mit Fehler-code 0xC0209029. Hier kann es zu Fehlermeldungen geschrieben werden, bevor diese mit mehr Informationen, warum der thread beendet wurde.
Informationen: 0x40043008 bei Datenflusstask, DTS.Pipeline: Post-Execute-phase ist der Anfang.
Informationen: 0x40043009 bei Datenflusstask, DTS.Pipeline: Cleanup-phase ist Anfang.
Informationen: 0x4004300B bei Datenflusstask, DTS.Pipeline: "die Komponente "DataReaderDest" (143)", schrieb 0 Zeilen.
Aufgabe fehlgeschlagen: Data Flow Task
Warnung: 0x80019002 im Paket: SSIS-Warnung, Code DTS_W_MAXIMUMERRORCOUNTREACHED. Die Execution-Methode wurde erfolgreich abgeschlossen, aber die Anzahl der Fehler erhoben (4) erreicht die maximal zulässige (1); resultiert in Fehler. Dies tritt auf, wenn die Anzahl von Fehlern erreicht, die angegebene Zahl in MaximumErrorCount. Ändern Sie die MaximumErrorCount oder den Fehler zu beheben.
SSIS-Paket " - Paket.dtsx ' fertig: - Ausfall.
Mein Ausdruck ist:
(DT_DBTIMESTAMP)(SUBSTRING(EVENT_D,7,4) + "-" +
SUBSTRING(EVENT_D,4,2) + "-" +
SUBSTRING(EVENT_D,1,2) + EVENT_T)
Meine original-Daten sind in dieser Reihenfolge:
EVENT_D: DD/MM/YYYY
EVENT_T: HH:MM:SS
Jede Hilfe geschätzt. Ich versuche mein Ausdruck Zeit zahlreiche, aber immer noch nicht.
- welche DB benutzt du?? mysql?
- Meine Quelle? SQL-server.
- Es gibt einige Werte, die nicht im korrekten Datumsformat. Wählen Sie den FALL, WENN isDate(EVENT_D) = 1, DANN EVENT_D ELSE NULL END as [EVENT_D] from yourTable.Führen Sie diese Abfrage aus und überprüfen Sie, ob u bekommen keine null-Werte
- Ya praveen u Recht, ich bekomme null-Wert für jeden am 30.04.2012, während ich Ihre Abfrage ausgeführt. 01/05/2012 und 02/05/2012 etc sind in Ordnung. Wie ist das so und was sollte ich tun?
- Welche Datentypen sind EVENT_D und EVENT_T?
- check meine Antwort
- In meiner Quelle, beide sind vom Typ varchar(11)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich vermute, dass es einige Datum-Zeit-Werte, die nicht im richtigen format .So SSIS-Fehler beim analysieren Sie .
In Ordnung zu finden, an dem falschen Datum-Zeit-Wert aus deiner Quelle Tabelle versuchen, umzuleiten, die Fehler Zeilen aus
Derived Transformation
und überprüfen Sie die fehlerhaften Daten mit einem Daten-viewerDas problem mit substring die Werte sind, wenn die Daten der Zeichenfolge nicht im richtigen format dann die
Derived Transformation
werfen Fehler .Ex:
in der abgeleiteten Transformationen verwenden, Ihren code zu konvertieren in
DT_DBTIMESTAMP
geben .Anderes Versuchen, verwenden Sie eine Skript-Komponente und analysieren Sie die
EVENT_D
undEVENT_T
Werte und konvertieren von datetime-Werten. Keine Notwendigkeit, sich für Abgeleitete Spalte mit all diesensubstring
Werteerstellen Sie eine
New Output column
Valid_D
mit dem Datentyp alsDT_DBTIMESTAMP
.Wählen Sie die input 2 Spalten EVENT_D und EVENT_T in deravailable input Columns
imScript Transformation Editor
VB.NET code
C# - code
Nun können Sie Valid_D Spalte, das ist der DateTime-Typ in Ihren späteren Transformationen
Update
: Das problem mit der syntax ist, können Sie nicht fügen Sie Datum+ Uhrzeit im string-format . Sie müssenparse
individuell sowohl EVENT_D und EVENT_T .Den
isDate
Funktion zeigt NULL für30/04/2012
denn als pro MSDNaber es gibt 1 für den Wert
01/05/2012
und02/05/2012
weil es als MM/dd/YYYYalso der 1. Termin ist 5. Jan 2012 statt 1. Mai 2012
Also die soultion nutzen ist, verwenden Sie script-Komponente und analysieren Sie diese Werte in gültiges Datum und Zeit, und verwenden Sie dann in Ihrer späteren Transformationen .
Bitte überprüfen Sie meine Transformations-code oben
Ich denke, dass Ihr mit dem SSIS-2005 .Der code sollte
nach Transformations -, Sie brauchen nicht zu verwenden, Abgeleitete Komponente .Das Ergebnis in der Spalte Valid_D enthält den gültigen Wert, der
datetime
formatWenn Sie wollte, dies zu tun, ohne ein Skript, Sie hätte einfach nur anders Ausdruck von
(DT_DBTIMESTAMP)(SUBSTRING(EVENT_D,7,4) + "-" +
SUBSTRING(EVENT_D,4,2) + "-" +
SUBSTRING(EVENT_D,1,2) + EVENT_T)
zu
(DT_DBTIMESTAMP)(SUBSTRING(EVENT_D,7,4) + "-" +
SUBSTRING(EVENT_D,4,2) + "-" +
SUBSTRING(EVENT_D,1,2) + " " + EVENT_T)
Nicht mit dem Raum zwischen dem Datum und der Zeit Teile ist, was sehr wahrscheinlich war die Ursache Ihres ursprünglichen Fehler. Sie waren immer
2012-04-3012:25:37
statt
2012-04-30 12:25:37
Ich Stand vor dem gleichen problem beim konvertieren einer Zeichenfolge, die Datum auf datetimestamp Feld. Es ist alles wegen Leerzeichen in das Feld ein.
Also müssen wir prüfen für Raum und konvertieren Sie Sie dann in datetimestamp.
Unten ist der Ausdruck für das gleiche.
LEN(TRIM([Feld1])) == 1 ? NULL(DT_DBTIMESTAMP) : (DT_DBTIMESTAMP)(SUBSTRING([Feld1],1,4) + "-" + SUBSTRING([Feld1],5,2) + "-" + SUBSTRING([Feld1],7,2) + "" + SUBSTRING([Feld1],10,2) + ":" + SUBSTRING([Feld1],12,2))