VS2012で(SQLデータツールコンポーネントを使用して)開発したパッケージがあります。このパッケージは、VFPOLEDBプロバイダーを使用してDBFファイルからデータを収集し、SQL Server 2012X64サーバー上のデータベースに配置します。パッケージを含むプロジェクトでは、Run64BitRuntimeのDebugOptionがfalseに設定されています。このパッケージをテストサーバーとライブサーバーのSSISパッケージストアにインポートしました(同じセットアップ)。 VFPOLEDBプロバイダーは両方にインストールされており、両方のマシンのレジストリで、32ビットランタイム用に存在することがわかります。
パッケージはテストマシンでは正常に実行されますが、ライブマシンでは失敗します。 SQLのライブインスタンスは、インストールされている32ビットVFPOLEDBプロバイダーを認識していないようです。
SQLのインスタンスの唯一の違いは、ライブ環境にはIntegration Service Catalogが設定されているのに対し、テストには設定されていないことです。サーバーのログを見ると、ライブが開始されると、sp_ssis_startupが実行され、安全でないアセンブリが読み込まれていることに関するメッセージがログに記録されます。このSPは、テスト環境では実行されません。カタログ。
私が作成するジョブには、32ビットランタイムを使用するようにフラグが設定されていますが、SSISカタログで使用しているVFPOLEDBに問題があり、ロードされていないことを感じずにはいられません。
私はSSISカタログについて何も知らないので、誰かが私が進むことができる方向を提案することができますか?
更新:これが私のジョブステップ構成です。 32ビットランタイムフラグが設定されます。
アップデート#2:
アップデート#3:
確認したところ、テスト環境とライブ環境は最初に述べたものと同じではありません。ライブサーバーには32ビットバージョンのdtexec.exeがありません(ただし、これが問題になるとは思わなかったので、 TechNet は、SQL ServerAgentで実行されるジョブは常に64ビットバージョンを使用すると言っています。 x86およびi64ISOを使用してテスト環境をセットアップしましたが、ライブ用には64ビットのみのバージョンでした。これを変更するには、ライブボックスからIntegration Services共有コンポーネントをアンインストールし、デュアルISOで再インストールする必要があると思います。
「32ビットランタイムを使用する」オプションの設定は、使用する32ビットバージョンがある場合にのみ機能すると思いますか?それは物事を説明するかもしれません。
64ビットSQLServerエージェントジョブからパッケージを32ビットモードで実行する場合は、ジョブステップタイプo->オペレーティングシステムを選択し、コマンドラインを入力するか、32ビットを呼び出すバッチファイルを使用しますdtexec.exeのバージョン
コマンド:CD "C:\ Program Files(x86)\ Microsoft SQL Server\120\DTS\Binn \" DTExec.exe/f "C:\ Download\Root\SQL Package.dtsx"
またはコマンド: "C:\ Program Files(x86)\ Microsoft SQL Server\120\DTS\Binn\DTExec.exe"/FILE "C:\ Download\Root\SQL Package.dtsx"/MAXCONCURRENT "-1"/CHECKPOINTINGオフ/レポートV/CONSOLELOG NCOSGXMT
注:SQL 201464ビットバージョンを使用していました。