SSISオブジェクトモデル - 64ビットマシン上でExcelの接続マネージャのエラー
-
19-09-2019 - |
質問
私は、Excelが(データフローソース)ファイルとSSISオブジェクトモデルを使用して.NETアプリケーションで実行されるOLEDB先データフローItem.Thisパッケージを使用してSQL Serverにデータを転送読み込むSSISパッケージを持っています。パッケージには、アプリケーションのサブフォルダ内のファイルシステムに保存されます。
パッケージは、これらのマシンはWIN2K3 32ビットを持っているboth.Both私の開発/テストマシン上で正常に動作します。 SSISは、BIDSの32ビット環境で構築しました。
私は、私はエラーを取得WIN2K3 x64の標準版を持って本番マシン上でこのアプリケーションをdeployeすると
OLE DBエラーが発生しました。エラーコード:0x80040154。 OLE DBレコードが利用可能です。出典:「マイクロソフトOLE DBサービスコンポーネント」HRESULT:0x80040154の説明:「クラスが登録されていません」。 接続マネージャ「のExcel接続マネージャ」へのAcquireConnectionメソッドの呼び出しがエラーコード0xC0202009で失敗しました。 コンポーネント「エクセルソース」(630)は、検証に失敗し、エラーコード0xC020801Cが返されました。
私はBIDSからそれを実行している場合(設計時に)プロジェクトのRun64BitRuntimeプロパティを設定しても問題が解決していることの他の記事で読んだことがある。
どのように私は、SSISオブジェクトモデルを通じてこのプロパティを設定します。
ここでは、パッケージを実行するコードの一部である
_application = New Application() _package = New Package() _package = _application.LoadPackage(packageName, Nothing) _updateResult = _package.Execute()
おかげ
マスード
解決
Run64BitRuntimeプロパティはのみBIDSの内にパッケージの実行に適用されます。 BIDSの外を実行している場合、このプロパティを設定する必要はありません。
私はあなたがコードで実行している場合、パッケージは64ビットモードで実行されていることである発行することを信じて、しかし、Excelはこれをサポートしていません。この作業を行うために、あなたはDTExecの32ビット版を起動するために支払う必要があります。