2016-09-01 4 views
0

Ich muss Daten von einem DB1 lesen und sie in ein anderes DB2 schreiben. Ich verwende eine komplexe Abfrage mit CTEs und temporäre Tabellen und nein, ich kann diese Abfrage nicht in einem SProc setzen. Ich verwende eine OLE DB-Quelle und ein OLE DB-Ziel.Das zweite Dataset von einer OLE DB-Quelle in SSIS abrufen

Wenn ich die Abfrage als SQL-Befehl in der OLEDBSource setze, bekomme ich die übliche Beschwerde darüber, dass es nicht möglich ist, Metadaten zu ermitteln, weil ein CTE eine temporäre Tabelle verwendet.

Ich kann die Problemumgehung "mit Resultsets" nicht verwenden, da es kein SProc ist. Also versuche ich mit der anderen Problemumgehung die "SET FMTONLY ON/OFF".

Jetzt akzeptiert die OLE DB-Quelle meine Abfrage, aber es gibt zwei Datensätze aus, der erste leere und der zweite sind die Daten, die ich brauche. Das OLE DB-Ziel schreibt keine einzelne Zeile, da nur das erste Resultset gelesen wird, das leere.

Wie kann ich das lösen?

Ich kann die Temp-Tabellen in etwas anderem nicht ändern und grundsätzlich kann ich die Abfrage nicht ändern. Ich suche nach einer SSIS-Lösung, wenn möglich, nicht nach einer SQL-Lösung. Thx.

Antwort

0

Für eine SSIS-Lösung können Sie keine OLE DB-Quelle verwenden. Diese Komponente kann nur auf die erste Ergebnismenge zugreifen.

Sie können eine Skriptumwandlung als Datenquelle verwenden und auf die zweite Ergebnismenge wie gewohnt zugreifen und ihre Spalten an die Ausgabe des Skripts senden.

+0

Ich bin nicht Experte genug in SSIS zu verstehen, was Sie geschrieben haben. Meinst du, dass ich eine Script Transformation (ST) INSTEAD der OLEDBSource benutzen muss und in diesen ST einen C# -Code schreibe, der tatsächlich in die Datenbank geht, um Daten abzurufen, in einen Datensatz mit 2 Tabellen einzutragen und dann den zweite Tabelle und senden Sie es an das OLEDB Ziel? –

+0

Ja, genau das meine ich. –

Verwandte Themen