2016-09-01 6 views
0

DB1からデータを読み取り、別のDB2に書き込む必要があります。 CTEとテンポラリテーブルで複雑なクエリを使用していますが、このクエリをSProcに入れることはできません。 私はOLE DBソースとOLE DB宛先を使用します。SSISのOLE DBソースから2番目のデータセットを取得する

OLEDBuilderでSQLコマンドとしてクエリを実行すると、CTEが一時テーブルを使用しているためメタデータを特定できないという通常の不満があります。

SProcではないため、「結果セット付き」の回避策は使用できません。だから私は、他の回避策、 "SET FMTONLY ON/OFF"を試してみてください。

今、OLE DBソースは自分のクエリを受け入れますが、2つのデータセットを出力します。最初の空と2番目のデータセットは必要なデータです。 OLE DB宛先は、最初の結果セット(空のもの)だけを読み込んでいるため、単一の行を書きません。

どうすればこの問題を解決できますか?

私は他の何かで一時テーブルを変更することはできませんし、基本的に私はクエリを変更することはできません。 SQLソリューションではなく、可能であればSSISソリューションを探しています。 Thx。

答えて

0

SSISソリューションでは、OLE DBソースを使用できません。そのコンポーネントは、最初の結果セットにのみアクセスできます。

データソースとしてスクリプト変換を使用し、通常の方法で2番目の結果セットにアクセスし、その列をスクリプトの出力に送信することができます。

+0

私はあなたが書いたことを理解するためにSSISで十分な専門家ではありません。あなたは、OLEDBSourceの代わりにScript Transformation(ST)を使用し、このSTにC#コードを書く必要があります。実際には、データを取得し、2つのテーブルを持つデータセットに入れてから、 2番目のテーブルを作成し、OLEDBの宛先に送信しますか? –

+0

はい、それはまさに私が意味することです。 –

関連する問題