none
Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine RRS feed

  • Question

  • Hi

    I am running a vb.net web app using MS Access 2000 db as backend on a Win 2008 Server (64 bit). I am getting above error. What are the exact steps to resolve this? I appreciate that there is an Access Database Engine 2007 that I may need to install but there are two versions 32 bit and 64 bit, which one should I install? Also what CPU should my vb.net app be targeting? Any other points that I need to keep in mind?

    Many Thanks

    Regards




    • Edited by Y a h y a Friday, July 26, 2013 1:52 PM
    Friday, July 26, 2013 1:47 PM

Answers

  • Hello Yahya, 

    Are you running your application on x64 or x86 version of Windows? 

    If so, I would suggest changing the Platform Target build option for your application to target x86 rather than Any CPU.Currently it appears that you are loading some assemblies out of the x64 GAC which would indicate that you are running x64 windows and Microsoft.Jet.OLEDB.4.0 provider is not 64-bit compatible.

    To resolve this issue open the project in Visual Studio then: 

    1. From the solution explorer right-click your project then click Properties

    2. Click the Build tab

    3. Change Platform target from: Any CPU to x86

    4. Re-build your solution

    Monday, July 29, 2013 3:18 AM

All replies

  • Hi, Y a h y a

    If there is no Microsoft.Jet.OLEDB.4.0 in your computer, the latest Microsoft Jet 4.0 Database Engine could be downloaded here :

    http://support.microsoft.com/kb/239114/en-us

    To avoid the 64-bit compatible problem, I recommend you to change platform from Any CPU to x86 in the advanced compiler options.

    If you want to use the x64 version, please try Microsoft Access Database Engine 2010 Redistributable. (http://www.microsoft.com/en-us/download/details.aspx?id=13255)

    Moreover, this question was mentioned in FAQ, you can look up the web page or read the useful parts of that article listed here.

    http://social.msdn.microsoft.com/Forums/en-US/b5a79958-5bce-4229-a69f-75589b6240a8/faq-item-solution-fails-on-64-bit-system-with-error-microsoftjetoledb40-provider-is-not

    When we uses the ACE or Jet OLEDB provider to access Microsoft Office based data files, like Excel and Access, we would encounter the error “provider is not registered on the local machine” on 64 bit system, even when they are actually registered correctly.

    The problem is that we compile our solution as “Any CPU”. By default the solution on 64 bit system would run as x64 process, but both of Jet and ACE OLEDB provider only have x86 supported versions. An x64 process cannot load x86 component. Then, the error happens.

    The solution is configuring the compile option to be “x86” which would force the application compiled as x86 executable file and run as x86 process.

    And if we program against ASP.NET web application and host the solution in IIS, to make sure the host process w3wp.exe executed as x86 processes, we need to configure the application pool to 32 bit mode. You can get more information from this link, http://learn.iis.net/page.aspx/201/32-bit-mode-worker-processes/

    Best Regards


    • Edited by BeginInvoke Tuesday, July 30, 2013 11:34 AM edit
    Monday, July 29, 2013 3:04 AM
  • Hello Yahya, 

    Are you running your application on x64 or x86 version of Windows? 

    If so, I would suggest changing the Platform Target build option for your application to target x86 rather than Any CPU.Currently it appears that you are loading some assemblies out of the x64 GAC which would indicate that you are running x64 windows and Microsoft.Jet.OLEDB.4.0 provider is not 64-bit compatible.

    To resolve this issue open the project in Visual Studio then: 

    1. From the solution explorer right-click your project then click Properties

    2. Click the Build tab

    3. Change Platform target from: Any CPU to x86

    4. Re-build your solution

    Monday, July 29, 2013 3:18 AM