SSIS 2012では、 "SQL実行タスク"を使用して、2つの列を持つ単一の行を返すストアドプロシージャを呼び出しています。その結果セットを2つのSSISユーザー変数にマップします。簡単でしょう?これは、ADO.NETまたはOLEDB接続マネージャーを使用すると機能しますが、ODBC接続マネージャーを使用すると失敗します。
ODBCを使用してマップすると、SSISは次のランタイム例外を返します。
[Execute SQL Task] Error: An error occurred while assigning a value to variable "MyString": "Value does not fall within the expected range."
SQL Server列のデータ型はnvarchar(50)です。 varchar(50)とchar(1)も試してみましたが、役に立ちませんでした。 SSIS変数「MyString」のデータ型はStringです。
ODBC接続のコードページは1252
およびSQL Server 2012の照合順序はSQL_Latin1_General_CP1_CI_AS
。
SQL Server 2012データベースを使用しています。
参照用のタスクの一般的なセットアップは次のとおりです。
ODBC接続を使用してこれを行うことは可能ですか?または、これはSSIS 2012でODBCに対してサポートされていない別のタイプの機能ですか?
ODBC SQLタスクでは、最初の位置は0ではなく1であり、これにより問題が完全に解決されました。また、ODBCはエイリアスを認識していないようですエイリアスをresultNameとして使用しないでください。メッセージ「expected range」は結果セットの配置を参照しているようです。つまり、 '0'または名前が変数の位置の範囲に表示されません(1と2などがある場合) 2つ選択、0または3は範囲外)
はい、ODBC接続でこれを行うことができます。ただし、ODBCを使用する場合、結果セットに名前を付ける柔軟性はありません。結果名 "MyNVarchar1"を数値 "0"に変更してみてください"および" MyNVarchar2 "を数値" 1 "に変更します。ODBCは、これらの列を0、1、2などとして参照する必要があります。