かざいむ日誌

IT関係で知ったことなどを記事としてあげていきます。内容に不備や質問などあればぜひコメントをよせてください。

友人の環境でAccessにつなぐWinFormアプリを作成したら、「Microsoft Access データベース エンジン (Microsoft.ACE.OLEDB.12.0 プロバイダー) は登録されていません」と表示される。

友人と簡易ツールを開発することがあり、DBにAccessを選んでみた。自分の環境で問題なくつながるが、友人の環境でData Sourceの追加ウィザードのテスト接続でもつながらない。

取りあえずその日は時間切れ。Access Data Engineがインストールされていないのではと思い、試してもらったがそれでもダメ。

ちょっと調べたら色々と情報があったのでメモしておく。

 

2015/11/03追記 START

MicrosoftのQAサイトに同様のエラーについてのスレッドがあった。

それによると、Microsoft Access データベース エンジン 2010 再頒布可能コンポーネントを入れてみて、ダメなら、2007のを入れると解決するとあった。友人のPCでは試していないがまずは補足まで。

→友人のPCでも無事に接続できました!

Download Microsoft Access Database Engine 2010 Redistributable from Official Microsoft Download Center

Download 2007 Office System Driver: Data Connectivity Components from Official Microsoft Download Center

 

HOW TO: FIX ERROR - "the 'microsoft.ace.oledb.12.0' provider is not registered on the local machine"

2015/11/03追記 END

 

 

まず、環境。

CPU: 32Bit

OS: Windows7

Office: Office 2013

Visual Studio2015

 

上記の環境で、同様の現象が起きる原因として、2つくらい候補があるらしい。

1.Office2013がまずい

Office2013だとこの事象が起きるらしく、Microsoft Access データベース エンジン 2010 再頒布可能コンポーネントとサービスパックのインストールが必要。

Access データベースに接続する - Excel

2.ターゲットプラットフォームがAnyCPUとなっている
これを、ターゲットプラットフォームをAnyCPUからx86にすると解決する、とする解決策。コードとインストールしたAccessの種類(32ビット、64ビット)で不整合があると、同様のエラーとなるらしい。この時、の解決策は、AnyCPUを32ビット、または64ビットに切り替える。またはOfficeAccessを64ビットまたは32ビットに切り替える、ことらしい。

 

'Microsoft.ACE.OLEDB.12.0' プロバイダはローカルのコンピュータに登録されていません - メモ的な思考的な

Microsoft Access 2010 を使用したデータ プログラミング