友人の環境で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でも無事に接続できました!
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 再頒布可能コンポーネントとサービスパックのインストールが必要。
2.ターゲットプラットフォームがAnyCPUとなっている
これを、ターゲットプラットフォームをAnyCPUからx86にすると解決する、とする解決策。コードとインストールしたAccessの種類(32ビット、64ビット)で不整合があると、同様のエラーとなるらしい。この時、の解決策は、AnyCPUを32ビット、または64ビットに切り替える。またはOfficeAccessを64ビットまたは32ビットに切り替える、ことらしい。
'Microsoft.ACE.OLEDB.12.0' プロバイダはローカルのコンピュータに登録されていません - メモ的な思考的な