2009-09-02 4 views
1

私は2レコードを返し、tempテーブルからselectステートメントを含むストアドプロシージャを持っているので、SSISのOLEDBソース内にこのストアドプロシージャを使用してレコードのセットを挿入しようとするとOLEDB宛先を使用して宛先SQLテーブルに格納します。言って、ソース側でエラーを投げSSIS + Tempテーブル

その:

[OLE DBソース[1661]エラー:SQLコマンドに基づく行セットは、OLE DBプロバイダによって返されませんでした。また上とでSET FMTONLY OFF

しかし、無駄のセットNOCOUNTを試してみました

...........

が、この中に助けが必要........

+0

真=遅延の検証を行い、同じ接続を使用してください? – Burnsys

+0

SSISから呼び出されたときに一時テーブルの使用を含むクエリがうまく機能しません。製品バグかもしれません。 – Faiz

答えて

2

これまでも同様の問題がありましたが、それはSSISが動的SQLの出力を判断できなかったためです。私は、予想される出力と一致するクエリの先頭に「偽の」Select文を含めることで解決しました。すなわち


CREATE PROCEDURE MyStoredProc 
AS 

    SELECT 1 As Field1, 2 As Field2, 3 As Field3 -- list of fields of appropriate type 
    WHERE 1 = 0 -- so nothing is actually returned 

    -- Real SQL goes here. 

GO 

+0

それはNULLレコードセットを返しませんか? – Faiz

+0

はい、SSISがクエリを解析すると、正しいスキーマが選択されます。奇妙ですが、それは動作します。 –

+1

次の記事で推奨されているIF 1 = 2ブロックを使用する類似の手法:http://www.sqlservercentral.com/articles/Integration+Services+(SSIS)/65112/ – Jeff

0

あなたがSP内のコードを投稿できる

関連する問題