私はこのようなシナリオを持っています:
@id
ストアドプロシージャに渡して、 @key
SSISを使用してプロシージャからを取得する必要がありExecute SQL task
ます。
create PROCEDURE lProcedurename
(@ID int ,
@key int output
)
with execute as caller
as
set nocount on;
begin
BEGIN TRY
set @key=999
END TRY
begin catch
----some codes
end catch
end
SQL実行タスクのプロパティを見つけてください
単一行として設定された結果
私はすでにexecutesqlステートメント(ssis execute sqlタスクレベル)を次のように指定しました
exec lProcedurename @ID = ? , @key = ?
パラメータマッピングとして
variablename ,direction, data type, parametername ,parameter size
user::id input long o -1
user::key output long 1 -1
結果セットとして
resultname,variablename
0 user::key
しかし、パッケージを実行するとエラーが発生します。プロパティ設定が正しいかどうか教えてください。
エラーをご覧ください
*SSISパッケージ「package1.dtsx」が開始しています。エラー:CMD Audit OnPreExecuteで0x0:このクエリの実行に関連付けられている結果行セットはありません。エラー:0xC002F309 at CMD Audit OnPreExecute、Execute SQL Task:変数 "key"に値を割り当てているときにエラーが発生しました: "Exception from HRESULT:0xC0015005"。タスクが失敗しました:CMD Audit OnPreExecute
同じパッケージをもう一度実行すると、別のエラーが表示されます。 SSISパッケージ「package1.dtsx」が起動しています。エラー:0xC001405Bイベントパッケージオンエラー:読み取りアクセスのために変数 "User::key"をロックしようとしたときにデッドロックが検出されました。16回試行した後、ロックを取得できず、タイムアウトしました。エラー:0xC00291EAイベントパッケージエラー時、SQLタスク:変数 "User::key"が存在しません。エラー:0xC0024107イベントパッケージオンエラー:タスクの検証中にエラーが発生しました。警告:0x80019002 at OnError:SSIS警告コードDTS_W_MAXIMUMERRORCOUNTREACHED。実行メソッドは成功しましたが、発生したエラーの数(5)が最大許容値(1)に達しました。失敗に終わります。これは、エラーの数がMaximumErrorCountで指定された数に達したときに発生します。MaximumErrorCountを変更するか、エラーを修正してください。エラー:テスト時の0x0:このクエリの実行に関連付けられている結果の行セットはありません。警告:0x80019002 at OnError:SSIS警告コードDTS_W_MAXIMUMERRORCOUNTREACHED。実行メソッドは成功しましたが、発生したエラーの数(5)が最大許容値(1)に達しました。失敗に終わります。これは、エラーの数がMaximumErrorCountで指定された数に達したときに発生します。MaximumErrorCountを変更するか、エラーを修正してください。*
user::key変数はすでに定義されていることに注意してください