Fehler beim Abrufen von Metadaten im SSIS-Paket aufgrund temporärer Tabelle
In SSIS kann das Abrufen von Metadaten aus temporären Tabellen gelegentlich dazu führen, dass das Paket fehlschlägt der Fehler: „Nicht spezifizierter Fehler. Ein OLE DB-Datensatz ist verfügbar. Die Metadaten konnten nicht ermittelt werden, da die Anweisung „select * from“ lautet „##TmpMcsConfigurationDeviceHistory86B34BFD041A430E84CCACE78DA336A1“ verwendet eine temporäre Tabelle.“
Dieses Problem tritt auf, wenn das Paket versucht, auf eine globale temporäre Tabelle mit dem Namen „##TmpMcsConfigurationDeviceHistory“ zuzugreifen. Der Fehler weist darauf hin, dass SSIS die Metadaten der temporären Tabelle nicht dynamisch ermitteln kann.
Lösung
Um dieses Problem zu beheben, können Sie die Metadaten für die temporäre Tabelle explizit definieren Tabelle mithilfe der WITH RESULT SETS-Klausel. Dadurch erhält SSIS im Voraus die erforderlichen Informationen, sodass die Metadaten nicht dynamisch ermittelt werden müssen, was zu Fehlern bei temporären Tabellen führen kann.
Beispielabfrage mit WITH RESULT SETS:
EXEC (' CREATE TABLE #a ( MyIntegerColumn INT NOT NULL, MyTextColumn VARCHAR(50) NULL, MyOtherColumn BIT NULL ) INSERT INTO #a ( MyIntegerColumn, MyTextColumn, MyOtherColumn ) SELECT 1 AS MyIntegerColumn, ''x'' AS MyTextColumn, 0 AS MyOtherColumn SELECT MyIntegerColumn, MyTextColumn, MyOtherColumn FROM #a') WITH RESULT SETS ( ( MyIntegerColumn INT NOT NULL ,MyTextColumn VARCHAR(50) NULL ,MyOtherColumn BIT NULL ) )
Durch die explizite Bereitstellung der Metadaten kann SSIS vermeiden, diese dynamisch aus der temporären Tabelle abzurufen, wodurch der Fehler behoben wird und das Paket die Metadaten abrufen kann erfolgreich.
Das obige ist der detaillierte Inhalt vonWarum schlägt mein SSIS-Paket beim Abrufen von Metadaten aus temporären Tabellen fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!