いくつかの MS Access データベースから SQL Server 2008 データベースにデータをコピーする一連の SQL Server Integration Services パッケージがあります。さまざまなサブパッケージを呼び出す 1 つの親パッケージがあり、その親パッケージは、次のようにパッケージを実行する .bat ファイルを実行するユーザーによって開始されます。
dtexec /f "\\networkshare\package.dtsx" /CHECKPOINTING OFF /REPORTING EWCDI
これは数年間うまくいきました。IT 部門は、32 ビットの Windows XP ワークステーションを 64 ビットの Windows 7 にアップグレードし始めました。これらのユーザーのワークステーションをアップグレードした後、パッケージは失敗し、エラーが発生しました。
-1071607037,0x,SSIS エラー コード DTS_E_OLEDB_NOPROVIDER_64BIT_ERROR. 要求された OLE DB プロバイダー MICROSOFT.JET.OLEDB.4.0 は登録されていません。おそらく 64 ビット プロバイダーが利用できません。エラー コード: 0x00000000。OLE DB レコードが利用可能です。ソース:「Microsoft OLE DB サービス コンポーネント」Hresult: 0x80040154 説明:「クラスが登録されていません」。
私のワークステーションはまだ Windows XP からアップグレードされておらず、パッケージを実行することはできますが、アップグレードを延期する能力がなくなっており、できるだけ早く解決策を見つける必要があります。この問題を解決するための努力の中で、これに関連する多くの記事や投稿を見つけました。私が試したことの中には、次のものがあります。
- ユーザーに Client Tools and Business Intelligence Development Studio がインストールされていること、およびパスが有効であることを確認した後、.bat ファイルの内容を変更して、具体的に「C:\Program Files (x86)\Microsoft SQL Server\100\DTS」を参照するようにします。 \Binn\dtexec.exe」は、32 ビットの JET プロバイダーが使用されることを期待して
- Run64BitRuntime 設定を調査しましたが、これはデバッグ中にのみ効果があるようで、役に立ちません
- /X86 フラグをコマンド ラインに追加することを調査しましたが、dtexec に関する MSDN の記事によると、これは SQL Server エージェントがタスクを実行している場合にのみ効果があります
- 私が最後に試みたのは、Microsoft Access データベース エンジン 2010 再頒布可能パッケージをインストールし、接続文字列を "Provider=Microsoft.Jet.OLEDB.4.0;" から変更することでした。"Provider=Microsoft.ACE.OLEDB.12.0;" に。私はこれで地面から降りることができないようです。BIDS で新しい接続を作成し、プロバイダーを「Microsoft Office 12.0 Access データベース エンジン OLE DB プロバイダー」に設定して接続をテストしようとすると、「プロバイダーの初期化中にエラーが発生したため、接続のテストに失敗しました。不明なエラーです」というエラーが表示されます。 .
他に何を試すことができるのか途方に暮れており、すでに試したことを試している場合でも、最初に試したときに何か間違った設定をした可能性があります。
どんな助けでも大歓迎です!