none
「Microsoft.ACE.OLEDB.12.0 プロバイダは、ローカルコンピュータに登録されていません」 というメッセージが表示される RRS feed

  • 質問

  • 開発環境

    OS: Win7 Ultimate X64

    ACCESS: ACCESS 2010 X64

    Visual Studio 2010 (ACCESS 2010 単体パッケージを使用)

    で、VB により ACCESS のアプリケーションを作成中です。

    実行時に 「Microsoft.ACE.OLEDB.12.0 プロバイダは、ローカルコンピュータに登録されていません」 というメッセージが表示されます。VB2005 の場合は、System.Data および System.Data.OleDb を imports していましたが、Vb2010 の場合、何か imports する必要があるのでしょうか ?

    なお、構成マネージャーのプラットフォームは X64 を指定しております。

    よろしくお願いいたします。

    2011年6月1日 10:04

回答

  • ただし、データ サーバーから「追加の接続」でテストしますと、32 bit、64 bit とも同様のエラーメッセージが表示されます。


    『データ サーバーから「追加の接続」でテスト』とは、どういった操作でしょうか?
    もし、Visual Studio の [サーバー エクスプローラー] で [データ接続] に [接続の追加] をしようとしているのでしたら、それはそのままではできません。Visual Studio の IDE (devenv.exe) は 32 bit アプリケーションですので、32 bit の Access データベース エンジンが必要になります。

    それとひとつ気になるのですが、プロジェクトのプロパティーがら参照を選択してパスが表示されますが、いずれも 32 bit をポイントしていました。こちらは、64 bit に変更出来ましたが

    変更先: c:\Windows\Microsoft.NET\Framework64\4.0.30319\

    「参照の追加」の方のパスは、32 bit をポイントしており、こちらは変更出来ませんでした。


    c:\program files (X86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0 に入っているアセンブリは参照用のアセンブリですので、x86 でも x64 でも気にせずに同じものを使えばよいです。
    実行時にはアプリケーションの構成に応じて、GAC から正しいアセンブリをリンクします。
    少しバージョンが古い話ですが、次の記事を読むとモヤモヤが晴れると思います。

    New Reference Assemblies Location - MSBuild Team Blog - Site Home - MSDN Blogs
    http://blogs.msdn.com/b/msbuild/archive/2007/04/12/new-reference-assemblies-location.aspx
    2011年6月15日 4:51

すべての返信

  • 作成中ということですので開発機で発生している現象でしょうか? エラーメッセージだけから判断するとそのプロバイダが入っていないように受け取れます。手元にAccess 2010の単体パッケージが無いのでわかりませんが、そのインストール時にオプションで指定するのかもしれませんね。
    とりあえずそのプロバイダは以下からインストールすることができます。

    Microsoft Access データベース エンジン 2010 再頒布可能コンポーネント
    http://www.microsoft.com/downloads/ja-jp/details.aspx?familyid=C06B8369-60DD-4B64-A44B-84B371EDE16D&displaylang=ja

     ちなみにimportsは名前空間の指定だけですから今回のエラーメッセージとは無関係です。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    2011年6月2日 2:01
    モデレータ
  • にゃごにゃごです。trapemiya 様、回答ありがとうございます。

    結論から言うと、お教えいただいたコンポーネントをインストールしても現象は変わりませんでした。その課程で気がつきましたが、ソリューション エクスプローラーからプロジェクトのプロパティーのうち、参照を見てみたのですが、ぱすが、パスが

    c:\program files (X86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0

    となっており、(おそらく) 32 bit 用のパスが設定されているようで、これを

    c:\windows\Microsoft.NET\Framework64\v4.0.30319

    に変更しました。

    いずれにしろ、
    Microsoft.ACE.OLEDB.12.0

    がプログラムにリンクされていないようです。調査を続けてみます。

    以上、取り急ぎ

    2011年6月4日 4:46
  • ちなみにこれ、構成マネージャーのプラットフォームを x86 にして、32 bit アプリで同じことをやるとどうなるのでしょうか?
    1 台の PC に 32 bit と 64 bit の ACE OLEDB プロバイダーを共存しようとすると、そのままでは具合が悪いらしいので、ひょっとするとと思いまして。

    Microsoft.ACE.OLEDB.12.0 provider is not registered...while Platform cannot be changed from x64 to x86 | Microsoft Connect
    http://connect.microsoft.com/SQLServer/feedback/details/571116/microsoft-ace-oledb-12-0-provider-is-not-registered-while-platform-cannot-be-changed-from-x64-to-x86
    2011年6月13日 7:55
  • totojo 様、ご連絡が遅れ申し訳ございません。

    その後、念のため全てを再インストールし、trapemiya 様ご指摘の "AccessDatabaseEngine_X64" および "AccessRuntime_X64" を追加いたしました。

    そのまま、プログラムを起動したところ (64 bit 環境) は出なくなりました。

    ただし、データ サーバーから「追加の接続」でテストしますと、32 bit、64 bit とも同様のエラーメッセージが表示されます。

    それとひとつ気になるのですが、プロジェクトのプロパティーがら参照を選択してパスが表示されますが、いずれも 32 bit をポイントしていました。こちらは、64 bit に変更出来ましたが

    変更先: c:\Windows\Microsoft.NET\Framework64\4.0.30319\

    「参照の追加」の方のパスは、32 bit をポイントしており、こちらは変更出来ませんでした。

    この設定に関してもお教えいただきたくお願いいたします。

     

    2011年6月15日 2:21
  • ただし、データ サーバーから「追加の接続」でテストしますと、32 bit、64 bit とも同様のエラーメッセージが表示されます。


    『データ サーバーから「追加の接続」でテスト』とは、どういった操作でしょうか?
    もし、Visual Studio の [サーバー エクスプローラー] で [データ接続] に [接続の追加] をしようとしているのでしたら、それはそのままではできません。Visual Studio の IDE (devenv.exe) は 32 bit アプリケーションですので、32 bit の Access データベース エンジンが必要になります。

    それとひとつ気になるのですが、プロジェクトのプロパティーがら参照を選択してパスが表示されますが、いずれも 32 bit をポイントしていました。こちらは、64 bit に変更出来ましたが

    変更先: c:\Windows\Microsoft.NET\Framework64\4.0.30319\

    「参照の追加」の方のパスは、32 bit をポイントしており、こちらは変更出来ませんでした。


    c:\program files (X86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0 に入っているアセンブリは参照用のアセンブリですので、x86 でも x64 でも気にせずに同じものを使えばよいです。
    実行時にはアプリケーションの構成に応じて、GAC から正しいアセンブリをリンクします。
    少しバージョンが古い話ですが、次の記事を読むとモヤモヤが晴れると思います。

    New Reference Assemblies Location - MSBuild Team Blog - Site Home - MSDN Blogs
    http://blogs.msdn.com/b/msbuild/archive/2007/04/12/new-reference-assemblies-location.aspx
    2011年6月15日 4:51
  • にゃごにゃごです。totojo 様、詳しい解説ありがとうございました。

    「追加の接続」 の件も、参照の追加の件も理解できました。心より、感謝いたします。作成中のプログラムの方は、まだ、「道半ば」 ですので、今後いろいろなことで不明な点もでてくると思いますが、その際は、また質問させていただきますので宜しくお願いいたします。

    2011年6月17日 0:48