単一の行を更新する簡単な更新を実行する必要があるSQLタスクがあります。
SQLStatementを次のように設定しました。
update agency set AgencyLastBatchSeqNo = ? where agencyID = ?
[パラメーターマッピング]ページで、正しい値が含まれていることがわかっている変数にパラメーター0とパラメーター1を設定しました。パラメーター名の値も正しく設定しました。
データベースでは、列AgencyLastBatchSeqNoはint、AgencyIDはbig intです。誰もがSSISでデータ型がマップするものを見つけるための参照を持っていますか? intの場合はSHORT、big intの場合はLONGを推測しました。
タスクを実行すると、次のエラーが表示されます。
[SQLタスクの実行]エラー:クエリ「代理店セットAgencyLastBatchSeqNo =?を更新」を実行すると、次のエラーで失敗しました。「パラメータ名が認識されません。」。考えられる失敗理由:クエリの問題ResultSet」プロパティが正しく設定されていない、パラメータが正しく設定されていない、または接続が正しく確立されていない。
誰かが間違っているかもしれないものを提案できますか?
ありがとう
ロブ。
これに対する答えは、パラメーターマッピング画面でパラメーター名の値を変更することです。
次のクエリがある場合
SELECT Id, AnimalName FROM dbo.Farm WHERE Farm_id = ?
パラメータがUser :: Farm_idという名前の整数変数であると仮定します
パラメータマッピング画面で次の値を選択します
Variable Name - User::Farm_id
Direction - Input
Data Type - LONG
Parameter Name - 0
Parameter Size - -1
元々、パラメータ名は「NewParameterName」になります。これを変数マーカーの順序位置( "?")に変更するだけです
言及していないことの1つは、接続タイプです。その場合のパラメーターマーキングは?ではないため、ADO.Netを使用していないと思います。他のタイプの接続の場合、パラメーターの名前は次のとおりです。
ADO(ADO.Netではない)接続:パラメーター名はParam1、Param2 ...
ODBC接続:パラメーター名は1,2,3 ... OLEDB接続:パラメーター名は0,1,2 ...です.
変数タイプの場合(パラメーターマッピングセクションではSSISの他の領域とは異なります)、通常はIntにLongを使用し、長さを-1に設定したままにします。 LongはIntとBigintの両方で機能すると信じています。
複数のパラメーターを使用している場合、SQLタスクの実行ウィンドウでパラメーターマッピングに移動し、パラメーターの数とパラメーターのサイズに応じて、パラメーター名を0,1,2,3 ....に設定します。これは、問題を解決するのに役立つはずです。
SSISデータ型を参照してください。
int = DT_I4 (4 byte integer) = Int32 variable
bigint = DT_I8 (8 byte integer) = Int64 variable
値を引用符で囲み、列名にタイプミスがないことを確認してください。
パラメーターマッピングを定義するときに、パラメーター名の後に後続する空白があると、このメッセージが表示される場合があります。