1

xp_cmdshell を使用してストアド プロシージャによって呼び出された SSIS "スクリプト タスク" から出力パラメータを返すことは可能ですか?

これまでに見つけたすべてのサンプルは、dts パッケージ変数などに値を割り当てる方法を示しています。メッセージ ボックスを介してそれらを表示しますが、私が見るすべてのサンプルは、Dts.TaskResult = (int)ScriptResults.Success; のみを返すスクリプト タスクを示しています。または Dts.TaskResult = (int)ScriptResults.Failure ...

基本的に、期待どおりに動作する dll 呼び出しからいくつかの値を取得するスクリプト タスクがあります。値はメッセージ ボックスで検証されます。しかし、SSIS パッケージを最初に実行したストアド プロシージャに戻す方法を見つけることができませんでした。

明らかな何かが欠けていますか?これをエンドツーエンドで行う方法の機能コードの例と制御フロー/データフローなどのスクリーンショットを提供してください... EG: ストアドプロシージャから -> *.dtsx パッケージを実行し、パラメータを渡します。 OUTPUT パラメータを含む。また、同じストアド プロシージャがこのタイプの呼び出しでこれらの出力パラメーターを読み取る方法。結果が返ってきたら…

前もって感謝します。

4

1 に答える 1

4

スクリプト タスクの値を呼び出し元のストアド プロシージャに返すことができるかどうかはわかりませんが、別の方法でこれを行い、最終結果を得ることができます。現在メッセージ ボックスに表示されているスクリプト タスクの値を取得できるローカル SSIS 変数を作成します。たとえば、次のようなものを作成しますmySSISVariable

変数ウィンドウ

タスクのスクリプト画面で、必ずmySSISVariableReadWriteVariables として選択してください。

スクリプト タスク スクリプト画面

スクリプト タスクで、この SSIS 変数を現在メッセージ ボックスに出力しているものに割り当てます。Dts.Variables["User::mySSISVariable"].Value = returnedValue;SSIS はこの値を変数に格納したので、新しいストアド プロシージャを呼び出すときに使用できます。 SQL実行タスクでこれらの変数を処理することになっています(複数のパラメーターの場合、 ? などを追加し続けますusp_MyNewStoredProcedure ?, ?, ?

SQL タスク実行の一般画面

SSIS ユーザー変数を入力パラメーターとして割り当てます (この例では OLE DB を使用しました。このリンクは、他のユーザーを使用してこれを実現する方法を示しています)。

SQLタスク実行パラメータ画面

于 2013-08-19T20:34:16.070 に答える