Benutzer mit den meisten Antworten
SSIS OLE_DB Command Fehler beim Lesen der Metadaten, Aufruf von Stored Procedure mit Parametern nicht konfigurierbar

Frage
-
Hallo,
ich versuche, in einer Datenflusskomponente einen OLE_DB-Befehl zu konfigurieren.
Der Befehl ist etwas wie
EXEC usp_MyProx @param1 = ?, @param2 = ?;
Die StoredProc nimmt einige tiefgreifende Berechnungen vor und in der zweiten Aufrufebene gibt eine temporäre Tabelle, die zu ebendiesen Berechnungen gefüllt, ausgewertet und wieder gelöscht wird. Als Konsequenz erhalte ich in der OLE_DB-Komponente folgende Fehlermeldung:
Fehler bei Datenflusstask [OLE DB-Befehl [98]]: SSIS-Fehlercode "DTS_E_OLEDBERROR". OLE DB-Fehler. Fehlercode 0x80004005. Ein OLE DB-Datensatze ist verfügbar. Quelle: "Microsoft SQL Server Native Client 11.0" HRESULT: 0x80004005 Beschreibung: "Die Metadaten konnten nicht bestimmt werden, weil die INSERT INTO #tmpTable... in der usp_DoMyCalculations-Prozedur eine temporäre Tabelle verwendet."
Um das noch einmal klar zu formulieren: Die Verwendung der temporären Tabelle erfolgt noch nicht einmal in der Prozedur, die durch die OLE DB-Befehl-Komponente aufgerufen wird, sondern irgendwo viel tiefer in deren Aufrufbaum. Und das bekomme ich nicht wirklich los.
Kann ich die Parameter irgendwie anders übergeben? Kann ich bei den Verfügbaren Ausgabespalten, wo die Metadaten auftauchen sollten, irgendwie manuell Spalten erzeugen, die dann der Reihe nach auf die Parameter gemappt werden?
Vielen Dank schon mal für Eure Vorschläge
Wolfgang
Antworten
-
Die Metadaten konnten nicht bestimmt werden
Hallo Wolfgang,
das hat mit der Übergabe der Parameter nichts zu tun, sondern das SSDT aufgrund der Verwendung der temporären Tabellen nicht exakt die Struktur des Rückgabe-Ergebnisses = Metadaten ermitteln kann.
Das kann man aber manuell beim Aufruf der EXEC Anweisung mittels "WITH RESULT" angeben, siehe EXECUTE (Transact-SQL) => "Metadata for the result set can be defined by using the WITH RESULT SETS Options"
Der Aufruf erfolgt so wie
EXEC usp_MyProx @param1 = ?, @param2 = ? WITH RESULT SETS (spalte1 int, spalte2 varchar(20));
Olaf Helper
[ Blog] [ Xing] [ MVP]- Bearbeitet Olaf HelperMVP Donnerstag, 21. November 2019 08:02
- Als Antwort markiert AWombl Donnerstag, 21. November 2019 19:23
Alle Antworten
-
Die Metadaten konnten nicht bestimmt werden
Hallo Wolfgang,
das hat mit der Übergabe der Parameter nichts zu tun, sondern das SSDT aufgrund der Verwendung der temporären Tabellen nicht exakt die Struktur des Rückgabe-Ergebnisses = Metadaten ermitteln kann.
Das kann man aber manuell beim Aufruf der EXEC Anweisung mittels "WITH RESULT" angeben, siehe EXECUTE (Transact-SQL) => "Metadata for the result set can be defined by using the WITH RESULT SETS Options"
Der Aufruf erfolgt so wie
EXEC usp_MyProx @param1 = ?, @param2 = ? WITH RESULT SETS (spalte1 int, spalte2 varchar(20));
Olaf Helper
[ Blog] [ Xing] [ MVP]- Bearbeitet Olaf HelperMVP Donnerstag, 21. November 2019 08:02
- Als Antwort markiert AWombl Donnerstag, 21. November 2019 19:23