web-dev-qa-db-ja.com

Microsoft.ACE.OLEDB.12.0プロバイダーはWindows 8で.mdbを開けなくなりました

Microsoft.ACE.OLEDB.12.0プロバイダーを使用してWindows 7(x64)でMS Accessデータベースを読み取るx64アプリケーションがあり、正常に動作します(Office 2010がインストールされています)。

Office 2013がインストールされたWindows 8で実行されている同じアプリケーションは、プロバイダーが以前のバージョンを開けないというメッセージで失敗します。

Office 2013がインストールされたWindows 8にはMicrosoft.ACE.OLEDB.15.0もありますが、コードを再確認し、接続文字列で12.0が指定されていることを確認しました。

このプロバイダーには異なる「バージョン」がありますか?または私が見逃したものがありますか?

X86プラットフォームを使用するためにWindows 8でテストプログラムを再コンパイルし、プロバイダーをMicrosoft.Jet.OLEDB.4.0に変更しましたが、すべて正常に機能します。残念ながら、このモジュールはx64(特にExcelへのプラグイン)で実行できるようにする必要がある大きなエコシステムの一部であり、アクセスデータベースは、アプリケーションによってサプライヤーのWebサイトからスイートによってダウンロードされるため、データベースを変換したり、すべてをx86に変更することは実用的ではありません。

前もって感謝します。

12
Craig D

各プロバイダーに使用されているファイルのバージョンを確認し、レジストリを検索すると、Office 2013がインストールされたWindows 8のクリーンインストールでは、両方のプロバイダーが同じアセンブリを指していることがわかりました。

(C:\ Program Files\Common Files\Microsoft shared\OFFICE15\ACEOLEDB.DLL)

次に、Microsoft Access Database Engine Redistributable( http://www.Microsoft.com/en-us/download/details.aspx?id=13255 )をダウンロードして実行し、適切なバージョンの12.0プロバイダーをC:\ Program Files\Common Files\Microsoft shared\OFFICE14\ACEOLEDB.DLLに追加すると、アプリケーションは期待どおりに動作します。

MSが12.0としてブランド化されたプロバイダーを組み込み、それが12.0のように動作しなくなったのは奇妙に思えます。

とにかく、4〜5時間の髪の毛の引き抜きに役立つことを願っています...

クレイグ

16
Craig D

古いACE再頒布可能パッケージのインストールに関する問題は、Office 2013で次にAccessを実行するときに、Officeがそれ自体を「修復」し、バージョン12のポインターをOffice15ディレクトリに戻すことです。

5
Chris I

私はWindows 8.1 64bitとMicrosoftOffice 2013を使用しています "Microsoft Access Database Engine 2010 Redistributable"しかし、何も変更されず、同じエラーが発生しました。 "2007 Office System Driver:Data Connectivity Components"をインストールすることで問題が解決しました。

私はこれを介してこの解決策を見つけました link

visual StudioでAccessデータベースに接続しようとしているが、このエラーが発生し続けますか?

最初にこれをインストールしてみてください: http://www.Microsoft.com/download/en/details.aspx?id=13255

ただし、私のようにうまくいかない場合は、次の方法を試してください。

注:これは2007年のオフィス向けですが、2010年のオフィスでも機能します。

  1. これをダウンロードしてインストールします: http://www.Microsoft.com/download/en/confirmation.aspx?id=23734

  2. vSで[データソースの追加]をクリックし、ウィザードに従って操作してください。 :)

4
Mahdi Rashidi

OPで記述された動作を明確にするためだけに:

Office 2013(ACE 15.0)では、MicrosoftはJet 3.x以前(つまりAccess 97以前)で作成されたmdbファイルのサポートをキャンセルしました。したがって、問題を引き起こしたOPのデータベースはAccess97-DBであったと強く思います。 Jet 4.0データベース(Access 2000、aslo .mdb)は引き続きサポートされており、エラーは発生しません。

Office 2013が以前のバージョンとして新しいドライバーも登録するという事実は、MSが意図的にハードコードされたプロバイダー名が組み込まれた多くのプログラムとスクリプトを機能させようとする試みです。 多く動作中、すべて ...

3
Stefan
  1. Microsoft Access Database Engine 2010 Redistributable x 64をインストールします( http://www.Microsoft.com/en-us/download/details.aspx?id=13255
  2. データベースを新しい形式に変換します(.mdb-> .accdb)
  3. プロジェクト全体で「Microsoft.Jet.OleDb.4.0」を検索し、Microsoft.ACE.OLEDB.12.0に置き換えます
1
user

さらに、32ビットバージョンのRedistributableは64ビットWindows OS上のOffice 2013_64ビットで動作するようですが、64ビットバージョンのRedistributableは私の場合は動作しませんでした

1
Damilola