7 Stimmen

Fehler: 0xC0202009 beim Datenflusstask, OLE DB-Ziel [43]: SSIS-Fehlercode DTS_E_OLEDBERROR. Ein OLE DB-Fehler ist aufgetreten. Fehlercode: 0x80040E21

Meine Quelle ist eine TXT Flat File-Quelle, das Ziel ist vom Typ OLE DB. (siehe Bild)

Bildbeschreibung hier eingeben

Ich habe ein sehr einfaches Tutorial auf Code Project gefunden, um ein Paket zu erstellen. Ich habe die Schritte abgeschlossen, aber beim Debuggen erhalte ich einen seltsamen Fehler (unten):

Kann jemand eine Erklärung zu diesem Fehler geben? Es hat Stunden gedauert, im Web nach dem Fehler zu suchen.

SSIS-Paket "C:\Users\USRNAME\Desktop\Projects\DataGeneratorSsis\DataGeneratorSsis\Package.dtsx" beginnt. Informationen: 0x4004300A bei Datenflusstask, SSIS.Pipeline: Validierungsphase beginnt. Informationen: 0x4004300A bei Datenflusstask, SSIS.Pipeline: Validierungsphase beginnt. Warnung: 0x80047076 bei Datenflusstask, SSIS.Pipeline: Die Ausgabespalte "intApplication" (7) auf Ausgabe "Flat File-Quellenausgabe" (6) und Komponente "Flat File-Quelle" (2) wird im Datenfluss nicht mehr verwendet. Das Entfernen dieser ungenutzten Ausgabespalte kann die Leistung des Datenflusstasks erhöhen. Informationen: 0x40043006 bei Datenflusstask, SSIS.Pipeline: Vorbereitungsphase für Ausführung beginnt. Informationen: 0x40043007 bei Datenflusstask, SSIS.Pipeline: Pre-Execute-Phase beginnt. Informationen: 0x402090DC bei Datenflusstask, Flat File-Quelle 2: Die Verarbeitung der Datei "C:\Users\USRNAME\Desktop\ddd.txt" hat begonnen. Informationen: 0x4004300C bei Datenflusstask, SSIS.Pipeline: Ausführungsphase beginnt. Informationen: 0x402090DE bei Datenflusstask, Flat File-Quelle 2: Die Gesamtzahl der verarbeiteten Datenzeilen für die Datei "C:\Users\USRNAME\Desktop\ddd.txt" beträgt 2. Fehler: 0xC0202009 bei Datenflusstask, OLE DB-Ziel [43]: SSIS-Fehlercode DTS_E_OLEDBERROR. Ein OLE DB-Fehler ist aufgetreten. Fehlercode: 0x80040E21. Ein OLE DB-Record steht zur Verfügung. Quelle: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80040E21 Beschreibung: "Bei einer mehrstufigen OLE DB-Operation sind Fehler aufgetreten. Überprüfen Sie jeden verfügbaren OLE DB-Statuswert. Es wurde keine Arbeit erledigt.". Fehler: 0xC020901C bei Datenflusstask, OLE DB-Ziel [43]: Es gab einen Fehler mit OLE DB-Ziel.Inputs[OLE DB-Ziel-Eingabe].Columns[AppID] bei OLE DB-Ziel.Inputs[OLE DB-Ziel-Eingabe]. Der zurückgegebene Spaltenstatus war: "Der Wert konnte nicht konvertiert werden, aufgrund eines möglichen Datenverlusts.". Fehler: 0xC0209029 bei Datenflusstask, OLE DB-Ziel [43]: SSIS-Fehlercode DTS_E_INDUCEDTRANSFORMFAILUREONERROR. Das "OLE DB-Ziel.Inputs[OLE DB-Ziel-Eingabe]" ist fehlgeschlagen, weil der Fehler Code 0xC0209077 aufgetreten ist, und die Fehlerzeilenverfügung "OLE DB Ziel.Inputs[OLE DB-Ziel-Eingabe]" spezifiziert Fehler bei Fehler. Es ist ein Fehler auf dem spezifizierten Objekt der spezifizierten Komponente aufgetreten. Es können vorher Fehlermeldungen mit weiteren Informationen zum Fehlschlag angezeigt worden sein. Fehler: 0xC0047022 bei Datenflusstask, SSIS.Pipeline: SSIS-Fehlercode DTS_E_PROCESSINPUTFAILED. Die ProcessInput-Methode auf der Komponente "OLE DB-Ziel" (43) ist fehlgeschlagen mit Fehlercode 0xC0209029 bei der Verarbeitung der Eingabe "OLE DB-Ziel-Eingabe" (56). Die identifizierte Komponente hat einen Fehler aus der zurückgeliefert ProcessInput-Methode. Der Fehler ist spezifisch für die Komponente, aber der Fehler ist fatal und wird den Datenflusstask dazu bringen, anzuhalten. Es können vorher Fehlermeldungen mit weiteren Informationen zum Fehlschlag angezeigt worden sein. Informationen: 0x40043008 bei Datenflusstask, SSIS.Pipeline: Post-Execute-Phase beginnt. Informationen: 0x402090DD bei Datenflusstask, Flat File-Quelle 2: Die Verarbeitung von Datei "C:\Users\USRNAME\Desktop\ddd.txt" wurde beendet. Informationen: 0x4004300B bei Datenflusstask, SSIS.Pipeline: "OLE DB-Ziel" hat 0 Zeilen geschrieben. Informationen: 0x40043009 bei Datenflusstask, SSIS.Pipeline: Bereinigungsphase beginnt. Aufgabe fehlgeschlagen: Datenflusstask Warnung: 0x80019002 bei Paket: SSIS-Warnungscode DTS_W_MAXIMUMERRORCOUNTREACHED. Die Ausführungsmethode war erfolgreich, aber die Anzahl der gemeldeten Fehler (4) erreichte das zulässige Maximum (1); was zu einem Fehlschlag führte. Dies tritt auf, wenn die Anzahl der Fehler die in MaximumErrorCount angegebene Anzahl erreicht. Ändern Sie den MaximumErrorCount oder beheben Sie die Fehler. SSIS-Paket "C:\Users\USRNAME\Desktop\Projects\DataGeneratorSsis\DataGeneratorSsis\Package.dtsx" beendet: Fehler.

Die relevante Fehlermeldung

Es gab einen Fehler mit OLE DB-Ziel.Inputs[OLE DB-Ziel-Eingabe].Columns[AppID] bei OLE DB-Ziel.Inputs[OLE DB-Ziel-Eingabe]. Der zurückgegebene Spaltenstatus war: "Der Wert konnte nicht konvertiert werden, aufgrund eines möglichen Datenverlusts."

12voto

Kyle Hale Punkte 7661

Dieser Fehler tritt auf, weil Sie einen Wert in Ihrer Quelle für die AppID-Spalte haben, der für Ihre AppID-Spalte im Ziel nicht gültig ist.

Einige möglicheBeispiele:

  • Sie versuchen, einen 10-stelligen Wert in ein 8-stelliges Feld einzufügen.
  • Sie versuchen, einen Wert größer als 127 in ein tinyint-Feld einzufügen.
  • Sie versuchen, den Wert 6.4578 in ein decimal(5,1)-Feld einzufügen.

SSIS wird von Metadaten gesteuert, und es erwartet, dass Sie Ihre Eingaben und Ausgaben ordnungsgemäß eingerichtet haben, sodass die akzeptablen Werte für beide im gleichen Bereich liegen.

1voto

Steve Jones Punkte 41

Dies wird in der Regel durch die Kürzung verursacht (der eingehende Wert ist zu groß, um in die Zielspalte zu passen). Leider wird SSIS Ihnen nicht den Namen der betroffenen Spalte mitteilen. Ich verwende eine Drittanbieterkomponente, um diese Informationen zu erhalten: http://naseermuhammed.wordpress.com/tips-tricks/getting-error-column-name-in-ssis/

0voto

Andrew Hill Punkte 1852

Es ist auch möglich, diesen Fehler von einem Auswahlelement zu erhalten, wenn die Abfrage auf ungewöhnliche Weise fehlschlägt (z.B. wenn eine Unterabfrage in einer Oracle OLEDB-Verbindung mehrere Zeilen zurückgibt)

0voto

TylerH Punkte 20586

Hinzufügen der Lösung des OPs aus einem <a href="https://stackoverflow.com/review/suggested-edits/3041969">abgelehnten Bearbeitungsvorschlag zu einer anderen Antwort</a>:

DAS PROBLEM:

  • Die AppID wurde im Source als Integer gespeichert, aber im Ziel erwarten alle Felder einen 100-Zeichen [String].

Die LÖSUNG:

  • Versuchen Sie, einen 'Datenkonvertierung'-Komponenten zwischen dem Source und dem Ziel zu platzieren (wie im Bild dargestellt).

  • Doppelklicken Sie auf die 'Datenkonvertierung'-Komponente, um den 'Datenkonvertierungstransformation Editor' zu öffnen, setzen Sie die richtigen Datentypen auf 'String [DT_STR]' und die Länge auf '100'.

Bildbeschreibung hier eingeben

-1voto

Vishal Kapoor Punkte 1

In meinem Fall war das zugrunde liegende Systemkonto, über das das Paket lief, gesperrt. Nachdem wir das Systemkonto entsperrt hatten und das Paket erneut ausführten, wurde es erfolgreich ausgeführt. Der Entwickler sagte, dass er dies während des Debuggens erfahren habe, als er direkt versuchte, eine Verbindung zum Server herzustellen und den Status der Verbindung zu überprüfen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X