19

テーブルからデータを照会し、各行で別のデータベースのストアドプロシージャを呼び出すSSISパッケージを作成しようとしています。SSISでどのようにストアドプロシージャを呼び出しますか?

EXEC myStoredProcedure ?, ?, ? 

...そして私は、パラメータをマッピングされた:

私の古いDTSパッケージでは、私はこれをやっていました。しかし、SSISでは、この作業をどうやって行うのか分かりません。

データフロータスクがあります。このタスクでは、最初にデータのクエリが実行されます。データをOL​​E DB宛先に渡します。データアクセスモードを「SQLコマンド」に設定しましたが、上記のSQLを入れようとすると、SQLを解析するときに「無効なパラメータ数」が表示されます。私はMappings画面に行くことができません。何か案は?

+1

なぜこのような単純なタスクはMSのデータ転送ユーティリティと非常に複雑に見えますか?これは、DTSでやりやすく、無駄なマッピングを設定するのに時間がかかっていました。 –

+0

「データフロー」レベルでこれを行うことができると確信していますが、実際にはやったと確信していますが、覚えていません。それ以外の方法は、たとえば、失敗したルックアップに対してINSERTプロシージャを実行することです。 –

答えて

13

- あるいは(MSDN documentation

は、データ型のオブジェクトの変数に設定されたソース結果を格納することができるとコントロールフロー(例here)にForeach Loopコンテナを使用してください。

+0

私はこれがうまくいくと思いますが、Unicodeの変換エラーが発生しています...どうすればそれを修正するのかは分かりません。 –

+0

もう少し詳しく説明することは難しいです。あなたのSPはcharまたはvarcharのパラメータを取るか? –

+0

... charおよび/またはvarcharパラメータである必要があります –

7

SQLの実行タスクを使用する必要があります。 SQLStatementセクションでは、ストアドプロシージャを実行するコードを追加できます。

パラメータを渡すには、? 「パラメータマッピング」セクションでパラメータを指定します。

良い例はhereです。 、OLE DB Commandはデータフローの各行に対してSQLステートメントを実行するために使用することができるデータの流れで

+0

データを実行SQLタスクに渡すにはどうすればよいですか?私はパラメータセクションに有用なパラメータは見当たりません。 "System :: xxxxx"パラメータのみ。 –

+0

この例は、唯一の2つの具体的なシナリオとして私を助けません。具体的には、私はselect文を実行しようとしており、各行を別のサーバのストアドプロシージャに渡しています。あなたはこれを行う方法を知っていますか? –

+0

^うまくいきます。 OWN変数を定義し、SYSTEMレベル変数を使用する必要はありません。あなたは、あなたのパッケージのコントロールフローセクションで "Execute SQL Task"を使用する必要があります。変数エディタを開き、左上に独自のUSERレベル変数を追加します。 – D3vtr0n

関連する問題