VS 2010 と 2012 Server の Integration Services Catalog の両方でエンド ツー エンドで正常に実行される開発 VM で開発された 2012 SSIS パッケージがあります。開発 VM と同じイメージを持つステージング VM でまったく同じ SSIS パッケージを実行すると、さまざまなタスクで失敗します。2 つの VM の唯一の違いは、接続マネージャーで指定しているサーバーです。ただし、問題はエンドポイントやデータに関連するものではなく、SSIS が実際にタスクを実行する方法に関連しています。いくつかのデータ フロー タスクでは、OLE DB ソース コンポーネントを使用しており、パラメーターを必要とする Sql コマンドを使用しています。すべてのクエリで、コメント ヘッダーを挿入しました。私たちの開発 VM では、これは問題なく動作します....問題はありません。ステージング VM から実行すると、クエリを解析してパラメーターを決定できません。もう 1 つの例は、SQL 実行コンポーネントから取得したものです。@@DBTS
それをbigintとしてキャストします(つまりSELECT CAST(@@DBTS AS bigint)
)。これは、文字列型の SSIS 変数 (CurrentTimeStamp) に配置されています。次に、変数 (CurrentTimeStamp) を受け取るストアド プロシージャを呼び出す別の Execute SQL コンポーネントにそれを渡しますが、パラメーター マッピングでは入力を LONG データ型として渡します。繰り返しますが、これは開発 VM では正常に機能しますが、ステージング VM では機能しません。次のエラーが表示されます:「結果をタイプ (DBTYPE_I4) の変数に抽出中にエラーが発生しました」。考えられる失敗の理由: クエリの問題。「ResultSet」プロパティが正しく設定されていないか、パラメーターが正しく設定されていないか、接続が正しく確立されていません。
OS のバージョン、パッチ、インストールされているソフトウェアを比較しました。以下にリストされている唯一の違いがあります。
- 開発 VM ステージング VM
- Microsoft Team Foundation Server 2010 が見つからない - JPN v10.0.40219
- Microsoft Visual C++ 2008 再頒布可能パッケージ - x64 9.0.3.0729.4148 がありません
- Microsoft Visual C++ 2008 再頒布可能パッケージ - x86 9.0.3.0729.4148 がありません
- Microsoft Visual C++ 2008 再頒布可能パッケージが見つからない - x64 9.0.3.0729.4974
他の誰かが同様のことを経験した場合、あなたが提供できるガイダンスは大歓迎です. 次のステップは、MS でサポート チケットを開くことです。
前もってありがとう、アンソニー
編集...この問題は解決されました。以下の概要を参照してください。
問題 1:
++LONG 型の変数に格納されている DB タイムスタンプ値を返す SQL 実行タスクがありました。タスクは DEV サーバーでは機能しますが、PROD サーバーでは失敗します。PROD サーバーで、SSIS 変数の型を ULONG に変更すると、タスクは成功します。
PROD では、戻り値が大きな数値であり、LONG データ型がオーバーフローする原因になっていることがわかりました。DEV では値が小さく、問題は発生していませんでした。私は調査し、ULONG の最大値が UInt64.MaxValue に要約されることを確認しました。これは非常に大きく、要件に十分なはずです。(最大値: 18,446,744,073,709,551,615)
http://msdn.microsoft.com/en-us/library/system.uint64.maxvalue.aspx
問題 2:
++SQL コマンドを起動する OLE DB ソースがありました。クエリの上にコメントを付けると、DEV サーバーでは機能しますが、PROD サーバーでの解析中に検証に失敗し、次のエラーが表示されます: SQL コマンドからパラメーターを抽出できません。プロバイダーは、コマンドからのパラメーター情報の解析に役立たない場合があります。その場合は、SQL コマンド全体が変数に格納される「変数からの SQL コマンド」アクセス モードを使用します。
追加情報:
構文エラー、権限違反、またはその他の非特定エラー (Microsoft SQL Server Native Client 11.0)
コメントの解析機能は、実際にはクエリが実行されるバックエンド クエリ エンジン上にあり、SSIS 固有のものではないことがわかりました。私たちの DEV では、正常に解析された Sql 2012 インスタンスに対して (コメント付きの) クエリを実行していました。障害が発生した PROD サーバーでは、コメントを解析できない Sql 2008 R2 インスタンスに対してクエリが実行されていました。PROD の接続マネージャーを Sql 2012 インスタンスを指すように変更し、コメントを付けて同じクエリを実行すると、正常に解析されます。