The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine.
The reason for this error is, I used Jet database engine in my ETL component to read Excel file, but the Jet library was not designed for 64-bit system. The community has been suggesting to compile the code to target to x86 platform in order to cope with this issue, which is something I was reluctant to do for the obvious reasons. It's also the primary motivation that I am blogging about this issue.
Further Google search indicates that Microsoft has released a 64-bit compatible Jet database engine last year. The following is the procedure that you may use to fix this issue if you have:
- Download Microsoft Access Database Engine 2010 Redistributable (of course you'll need to choose the right bit for your server), and install it on your server
- Change your connection string in your code or configuration file from
Provider=Microsoft.Jet.OLEDB.4.0;
to
Provider=Microsoft.ACE.OLEDB.12.0;
After I have done the above, my ETL component worked fine on the 64-bit system.
Hope this helps if you ever run into this issue.
Hi,
ReplyDeleteI use MS Access as a backend for my application which works in 32 bit and not in 64bit OS.
I had the same problem "The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine." and i have changed the connection string as you have changed.
I have installed the Microsoft Access Database Engine 2010 too.
It works fine when i use select statements but throws error while i use insert, update and delete statements.
Please help me on this to get it done for Insert, Update and delete statements too.
Thanks in Advance
DS
@DS, there is no reason that you should receive the error if your code worked previously. Maybe you can post your connection string here so I can have a look. Also I would check the file system permission in your case.
ReplyDeletethanks, i change my strig and it´s working!!!
ReplyDeleteThe conection into the vb will be change too.
This option exist.
You dont need install "Microsoft Access Database Engine 2010"
Thanks
Fanan
plz can any one tell me how to change the string......... ???
ReplyDeleteHi sainath, you can use any text editing tool to change the connection string in your application's config file. The file name of the config file is different from application to application. For web application, it's web.config. For Windows form application, it's (YourAppName).exe.config. They are basically xml files.
ReplyDeleteHi Everybody,
ReplyDeleteI just backed here to add my solution that really worked for me:
My project had been setup to works with DotNet Framework 2.0,
So I changed form DotNet framework 2.0 ---> Dotnet framework 4.0
and then I changed from Dotnet frmaework 4.0 ---> DotNet framework 2.0
This solution works great to me,
Regards,
If you are trying to read an excel file using oledb in Web appln( win 2008 R2, VS 2010), then there is one more thing that need to be done.
ReplyDeletemake following changes to IIS:
App pool--> Advance Setting -->Enable 32-bit applications = true
This worked for me.
Hi,
ReplyDeleteI have created an application to import Tags into oracle db from Excel file and its working fine in windows XP but when i tries to import in Windows Server 2008 R2(64 bit OS),Iam getting error as 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine'. Can anyone please help me on this issue.
Thanks,
Raju
Thank you so much for posting this. I've been beating my head against this problem for days and this finally fixed it for me. Switching the provider to the ACE version cleared up the Excel import issue I had been having when the package was deployed (switching to Run64BitRuntime = "False" worked fine in dev, but did nothing once deployed).
ReplyDeleteDaniel Cai
ReplyDeleteHere is a LINQ Provider for MS Access:
https://www.kellermansoftware.com/p-47-net-data-access-layer.aspx
Thanks for sharing this informative blog..Keep posting..
ReplyDeleteDot Net Course in Chennai