SSIS パッケージで次のエラーが発生します。
[SQL タスクの実行] エラー: クエリ "EXEC [spGetFileId] @zFileName, @Id" の実行が次のエラーで失敗しました: "変数 "User::FileId" に割り当てられている値の型は、現在の変数の型と異なります。 Variables may not change type during execution. 変数の型は厳密ですが、Object 型の変数は除きます。
SQL サーバーで単純なストアド プロシージャを実行するExecute SQL Taskを作成しました。
CREATE PROCEDURE [dbo].[spGetFileId]
@zFileName VARCHAR(255),
@Id INT OUTPUT
AS
BEGIN
SET NOCOUNT ON;
SELECT @Id = [Id]
FROM [tblFileLog]
WHERE [zFileName] = @zFileName
END
タスクのSQLStatementプロパティは次のとおりです。
EXEC [spGetFileId] @zFileName, @Id
次のSSIS 変数があります。
- ユーザー::ファイル(文字列)
- ユーザー::FileId (整数)
パラメータは次のように SQL タスクにマップされます。
- 変数 | 方向 | タイプ | パラメータ
- ユーザー::ファイル| 入力 | 文字列 | @zファイル名
- ユーザー::ファイル ID | 出力 | Int32 | @ID
変数の型 ( int16
、int32
およびint64
; 文字列) をいじってみましたが、エラーは解決しません。助けてください!
編集:
PRINT @Id
の前にa を追加したストアド プロシージャをデバッグするEND
と、期待値が出力されますが、実行するとSELECT @Id
(出力パラメーター) が返されますNULL
。
EDIT2:
同僚が問題を特定し、私が以下の回答としてマークした解決策を提供しました。