2016-10-06 1 views
0

Ich habe mit einem SSIS-Paket gearbeitet, das merkwürdiges Verhalten gezeigt hat. Derzeit führen wir dieses Paket über den Taskplaner aus, der eine BAT-Datei aufruft, die auf das Paket verweist. Dieses Paket schlägt ziemlich häufig fehl, wird aber immer erfolgreich ausgeführt (Ergebnis 0x0), wenn es mehrmals genug wiederholt wird. Unsere Taskplaner-Task für diesen Prozess wird so eingestellt, dass sie automatisch erneut ausgeführt wird, wenn sie ein Ergebnis zurückgibt, das nicht 0x0 ist. Normalerweise läuft es innerhalb der ersten 3 Versuche, oft auf der ersten. Da ich vor einigen Monaten ein Update durchgeführt habe, hat es bei einigen Gelegenheiten länger als üblich gedauert und ist öfter ausgefallen als gewöhnlich.SSIS-Paket schlägt manchmal fehl, aber nicht immer (nicht unterstützter Parametertyp)

Leider ist Re-Running wirklich nur eine Notlösung und keine langfristige Lösung für unsere Probleme. Angesichts der aktuellen Situation ist eine vollständige Überarbeitung dieses Pakets jedoch nicht möglich. Für mehr Hintergrund führt dieses Paket einen ETL-Prozess durch.

Neulich habe ich das Paket über SSMS Integration Services ausgeführt, um eine Vorstellung davon zu bekommen, wo das Paket fehlgeschlagen ist und warum. Ich erhielt die folgenden Fehler:

Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E21. An OLE DB record is available. Source: "ASEOLEDB" Hresult: 0x00000000 Description: "[00000] [Native Code: 30071] [ASEOLEDB]Unsupported parameter type".

Error: OLE DB error occurred while fetching parameterized rowset. Check SQLCommand and SqlCommandParam properties.

Error: SSIS Error Code DTS_E_PROCESSINPUTFAILED. The ProcessInput method on component "Lookup 1" (70326) failed with error code 0xC0208253 while processing input "Lookup Input" (70327). The identified component returned an error from the ProcessInput method. The error is specific to the component, but the error is fatal and will cause the Data Flow task to stop running. There may be error messages posted before this with more information about the failure.

Error: The attempt to add a row to the Data Flow task buffer failed with error code 0xC0047020.

Error: SSIS Error Code DTS_E_PRIMEOUTPUTFAILED. The PrimeOutput method on component "DIST data" (1660) returned error code 0xC02020C4. The component returned a failure code when the pipeline engine called PrimeOutput(). The meaning of the failure code is defined by the component, but the error is fatal and the pipeline stopped executing. There may be error messages posted before this with more information about the failure.

Der DTS_E_PRIMEOUTPUTFAILED Fehler und die vorhergehende Zeile für 10 verschiedene Komponenten aufgetreten ist, aber ich glaube nicht, sie alle sehen und ist hilfreich, da es der gleiche Fehler ist.

Ich habe etwas lesen und von meinem Verständnis hat dieser Fehler möglicherweise mit der Puffergröße zu tun. Was ich nicht verstehe ist, warum dieser Fehler manchmal und nicht andere auftreten kann. Der erste Fehler über nicht unterstützte Parametertypen war etwas, an dem ich nicht viel finden konnte, aber das gleiche gilt: Warum sollte es manchmal fehlschlagen und manchmal funktionieren?

Ich hatte wirklich gehofft, jemand könnte erklären, warum diese Fehler manchmal aber nicht immer auftreten können, und wenn es eine mögliche schnelle Lösung gibt, die ich untersuchen könnte, damit das Paket öfter erfolgreich ausgeführt wird.

Jeder Einblick würde sehr geschätzt werden, danke.

Antwort

0

SSIS-Fehlermeldungen spiegeln nicht immer die Wahrheit wider. Das Problem, das Sie sehen, ist wahrscheinlich auf Probleme mit der Datenbankverbindung zurückzuführen. Und die Tatsache, dass der Fehler zufällig ist, macht diese Möglichkeit noch stärker.

Wenn der Fehler erneut auftritt, versuchen Sie dieselbe Abfrage in der OleDb-Phase auszuführen, die den Fehler über Management Studio oder die Befehlszeile anzeigt, sowie die SQL Server-Protokolle zu aktivieren, um zu überprüfen, ob die Verbindung zur Datenbank unterbrochen ist nach dem Weg. Dies wäre das erste, was ich angehen würde, anstatt mich mit dem Paket von ssis zu befassen, denn wenn es einmal funktioniert, sollte es immer funktionieren, wenn man berücksichtigt, dass sich alle äußeren Faktoren nicht ändern, was in diesem Fall nicht wahr sein könnte.

Verwandte Themen