2017-01-03 15 views
-1

OLEDBソースとして動的SQLを使用するストアドプロシージャを使用するSSISパッケージがあります。 「Microsoft SQL Serverのネイティブクライアント11.0」HRESULT:0x80004005の 説明:「メタデータは声明 ので判断できませんでした 『幹部sp_executesqlを@sqlStr』の手順で、私はパッケージを実行すると、私はこのエラーSSIS OLE DBソースで動的SQLでストアドプロシージャを使用しているときのエラー

Sourceを取得します's_offc_cap_st_rpt_efile' に動的SQLが含まれています。 に明示的に結果セットを記述するにはWITH RESULT SETS句を使用することを検討してください。 "

Oledb source構成は次のようになります。

enter image description here

このエラーの理由は何ですか?誰かが私にこの問題の解決策を見つける手助けをすることができますか?

+0

エラーメッセージのようにWITH RESULT SETS句を試しましたか? –

+0

私はそれをproc内に格納しようとしました...うまくいきません – bmsqldev

+0

それは間違っていました。デバッグに役立つように、あなたの試行を投稿してください。ストアドプロシージャではなく、呼び出しで使用します。ここをクリックしてください:http://stackoverflow.com/a/28328734/1507566 –

答えて

1

SSISの列名が適切な出力先にマップできるように、SSISは常にメタデータを作成するために列リストを選択する必要があります。

ここでは、実行時にコンパイルして実行する動的SQLを使用しています。このエラーを取り除きたい場合。私はテーブルの変数を作成することをお勧めし、このテーブル変数にダイナミックSQLの出力を取得し、select * from @tablevaribaleを書く。そのプロシージャは列リストをssisに返します。

+0

ダイナミックSQLはストアドプロシージャ内に作成されます。ストアドプロシージャ内でテーブル変数を作成すると – bmsqldev

+1

@bmsqldevはいダイナミックSQLのテーブル変数とダンプ出力を作成してから書き込むとそのテーブル変数で動作するselect文を実行します。まだ問題が見つかった場合にお知らせください –

関連する問題