SQLSERVER2005でストアドプロシージャを作成し、SSISのSQL実行タスクでExec文を使用して実行しています。
正常終了時にはパラメータマッピングでOUTPUTとして設定した変数に、ストアドのOUTPUT引数が返ってきます。
しかし異常終了(キー重複などのステートメント異常)でSQL実行タスクが異常終了すると、OUTPUT引数が返ってきません。
(OUTPUT引数は、後続のスクリプトタスクで参照してカスタムログとして出力しています)
ただ、SQL Server Management
Studio上でストアドを直接実行した場合は、画面上に値が返ってきており、ステートメントが異常となってもストアドが途中で終了することなく、最後まで実行されています。
SSISのSQL実行タスクはOLE DB接続を使用し、Exec文は「Exec ストアド名 ?,?,?,? OUTPUT,? OUTPUT
」のように設定しています。
SSISのSQL実行タスクは、SQLステートメント異常終了時にはパラメータマッピングでOUTPUTとして設定した変数に値は返らないのでしょうか?
推測ですが、SQL Server Management
Studioでは変数をSELECT文で画面表示させているから返ってきていて、SSISの場合は「タスク異常終了=OUTPUT引数をマッピングする機能が働かない」ということなのかなと思っています。
もし返らないものなのであれば、ストアド内の異常終了したSQLを知る手段としては、DB接続、ストアド実行、ログ出力を全てスクリプトタスクで行うようにするしかないのかなとも思います。(これについては、できそうだという事しか分からないですが)
使用バージョン:SQLSERVER2005 Standard Edition SP2
OS:DBサーバーはWindows Server 2003
クライアントはWindows XP Professional SP2
SSISのパッケージは、現在はクライアントに配置しており、クライアントから実行しています。
SSISの実行はVisual Studioのデバッグ機能です。
ご教授のほど、宜しくお願い致します。