There are times when the coexistence of 64 and 32 bit code on the same machine can cause all sorts of seemingly strange issues.
One of them just occurred to me while trying to run the [ASPx demos][dxdemo] from [Developer Express][dx], my main provider of .Net components (the best supplier I’ve ever been able to find).
I was getting the following error:
_The ‘Microsoft.Jet.OLEDB.4.0’ provider is not registered on the local machine:_
It may look otherwise, but this error is generally due to either of two thing:
* you don’t have Office 2007/2010 Jet drivers installed
* or you are running a 32 bit application in a default x64 environment.
The first issue is easy to solve, just download the [Access 2010 Database Engine][Db2010Engine] from Microsoft (works with Access 2007 databases as well).
For the second one, the fix is also easy enough:
* _For Windows 2008_: Navigate to Server Manager > Roles > Web Server (IIS) > Internet Information Services (IIS) Manager, then look under your machine name > Application Pool.
* _For Windows 7_: Navigate to Programs > Administrative Tools > Internet Information Services (IIS) Manager, then look under your machine name > Application Pool.
Under there you can call the DefaultAppPool’s advanced settings to change `Enable 32-Bits Applications` to `True`:
You may have to restart the service for it to take effect but it should work.
* [Scott Hanselman’s blog entry][sh] about undestanding 64 vs. 32 bitness in .Net.
* [Access 2010 Database Engine driver][Db2010Engine]
* 10DEC2011: Updated driver link to use the Access 2010 engine.
* 03APR2010: Added instructions for Windows 7
* 12FEB2009: Added reference to Scott’s article.
* 28OCT2008: Original version
Bingo Thnka god someone knows what they’re talking about. Additionaly, you will have to set the folder permissions to allow iis_iusrs to connect to the databse from a client pc
I am using Vista 64 bit. Second soln. worked for me
Can you tell me how to navigate to those screens to set the Enable 32-Bits Applications to True on a windows Vista OS?
@Paul: you should be able to access IIS configuration settings by right-clicking on My Computer and choosing Manage to open the Computer Management console. From there, IIS settings are accessible under the Services and Applications tree.
thx a lot, search is over now 😉
thanks… save a lot of time
Thanks… this worked like a charm
you are good, mate
One issue with this is that you lock IIS into running only 32-bit code.
@TheArtTrooper: true, but I don’t think you can have it both ways: if you need Jet, you’re stuck with 32 bits.
2 questions: 1. I have Vista 64bit and found Services and Applications tree but still don’t understand where to enable 32 bit. Also, I need to run my 64 bit platform (Mplus 5.2 stat software) immediately after using this 32 bit application. Will I run into problems? And does anyone out there have issues with N2MPlus (the program that supposedly converts .xls (Excel) and .sav (SPSS) files to MPlus??? I wish this damn thing would work!
The reason I could not see where to change the iis setting was because iis was not installed. I went to control panel>programs>turn win programs on or off> iis (check on)… but then I enabled “True” as stated above in the advanced settings, and reset the computer, and it STILL doesn’t work. Any suggestions? I saw something about resetting the jet database via run>cmd and then going to the .NET directory and putting in 3 commands for uninstalling, reinstalling, etc… but I don’t have any idea what this fix is for exactly.
Thanks a lot for this tips. All is OK now.
I was signing a $$$ budget to convert all of our web-Access applications to web-SqlServer applications… You saved my boss many $$$ 🙂
@Giorgio: glad the tip saved you money!
thank you so much for help 🙂 , i was really stuck and then find your blog
Thank you very much ~O(∩_∩)O~
I wish I had the same luck but I still got the same error after applying the second solution…
Thanks, other sites have mentioned that you need to install access components, but I have been going crazy for days because they didn’t add that you had to fken make changes to the iis and change the application pool to “true” so that it will accept 32 bit applications. And on top of that SQL server Express had other issues. I was about to give up on it all. Many, many and many thanks
Thanks for posting this info. It helped, but installing the Office 2007 components did not solve the Jet OLEDB problem for me. I see the Jet components in the SysWOW64 folder, and I see them listed in the registry, but the provider still doesn’t work. A trick I’ve learned for setting up connection strings is to create an empty file with a UDL extension and double-click on it. That brings up the Data Link dialog, which is like a wizard for building connection strings. Anyway, it lists all of the OLEDB providers on the first tab, and the Jet provider is still not in the list. After loading the office components, I see a few providers that were not listed before, but Jet is not one of them. Any thoughts?
Brilliant – thanks a lot for that tip. Enabling 32-bit applications solved it for me.
it ‘s cool,thank you.
hi all is there a 64 bit version of the jet dll’s? I have a dependancy to keep the application pool in 64 bit mode, so the setting in my app pool has to remain false for 32 bit apps. but that breaks the jet dll. anyone know if it exists? thanks
dazza: According to Microsoft, Jet OLEDB has been obsolete since about 2005. They do not have a 64-bit version of the OLEDB drivers and have no plans to release them. Jet OLEDB is dead, and the customer be damned. Your only options are to switch to a different access method or switch databases. Yes, this was really bad news for me too. James
Thanks a lot, it saved me a day.
Great tip. Thanks.
Excellent, great help. Thanks! This worked for me, both the install and the x64 tip were required.
What if the application is not web hosted. I am using a console tool which uses Excel to import/export settings. It is not working on 64 bit Windows Server 2008 . Any thoughts ??
I gotta say thanks to your solution. Thanks very much. The second solution works for me.
OMG I love you, if I was a girl I would have your babies.
I am facing same problem in .NET Windows Service. How can i run Windows service as 32 bit application in a default x64 environment (Win 2008 server)?
Sanjay: That is a similar, but different problem. You should be able to run your service as a 32-bit app by recompiling it with the “platform” set to “x86” instead of “Any CPU”. Use the Configuration Manager to change these settings. James Byrd
It worked great!!! Thanks for posting.
Thank you so much for posting this! What a help!
Merci beaucoup, trop top 🙂
I did both steps and still the problem remains. In my code the problem is when i write: Dim login = Me.NameAndPassTableAdapter1.UsernamePasswordString(UsernameTextBox.Text, PasswordTextBox.Text) When i click ok it pops that: The ‘Microsoft.Jet.OLEDB.4.0’ provider is not registered on the local machine. Do i need to restart my pc? What am I doing wrong?
Its ok i solved it
Thank’s a lot! Helped me big time! The headaches I’ve been going through the last couple of days trying to install SQL Express 2008 on a new Windows 7 installation – and then connecting it to asp… Your guide was my very last obstacle! So thanks!! 🙂
Thank you very much. I have the latest Windows 7 64bit OS and was trying to run examples from the book Murach asp.net 3.5 C#.
Hi, i have windows server 2008 R2. And when i am running a programm i get the same error. Do you know how can i fix it?
Thanks Post helped me a lot and problem get resolved
Hi, my machine cannot connect to MySQL database through MySQL ODBC connector 64bit once I Enable 32-Bits Applications to True ;( ERROR [IM014] [Microsoft][ODBC Driver Manager] The specified DSN contains an architecture mismatch between the Driver and Application
you good It’s a working solution
i am using windows 7 but doesn’t know where to navigate those programs and administrative tools to get iis settings. pls. help. thanks!
Worked with option 2
Thanks for your writting, while doing this changes, it’s really worked on my server.
Please note that the reference you intended to provide (“Scott Hanselman’s blog entry about undestanding 64 vs. 32 bitness in .Net.”) only links to your screenshot, not to the blog entry. 😉
@ C Thanks, the link has been corrected.
@ C : Thanks a lot… You saved me in fixing the issue.really appreciated your work that you have done here. Sundeep G
Be sure the the IIS feature is turned on…to do that go to control panel -> turn windows features on or off, then check the internet information services box
Cosma – I’m dtill having the same issue you had in post #38. You mentioned you solved it – how? Thanks in advance.
I am using window 7 64 bit. . worked for me
I’m using Windows 2008, did the 2 easy steps and bingo! It’s great when you “stumble” upon someone who knows what they’re talking about in just a few clicks.
For those of you who want to keep your 64 bit processes but need access to Excel files you can use http://exceldatareader.codeplex.com/ Apparently it works on 2008 and handles more file formats (XLSX). I’d rather do this than depend on the oledb drivers which may disappear at any point in an upgrade/rehost.
haey paul i’m not able to find IIS in servicer and applications tree. plz help me
@renaud plz help me to find out IIS. i’m using windows7 home premium 64bit.
Thanks a lot, i have done much research on www before at least i found your solution!
Thanks brother — from India..
Bingo…. Its done….. Now I want to know, is this available for each site separately ?
Gr8 post. It helps me very much.
thanx a lot it really helpful…:)
Hi dude, you understand this stuff more than microsoft bill gate, they have no idea of user’s problems to support them. You certainly know what you are talking about, well done, keep the open source knowledge going!!!
I will definitely be posting a link to your solution on my site. This was driving me nuts. I use Access all the time, but had never had to run it on my own server. When I got the error message you refer to, I started browsing around expecting it to be obvious. Lots of false leads and dead ends. Your steps for Windows Server 2008 were the answer. Thank you!!
@Rick Wannall: thanks. I’m always surprised as how much traffic this page still gets after 3 years… 🙂
Wow… thanks man……
Hey guys just change the solution platform to x86….from configuration manager. Mine started working properly…!
Thank you very much!!! Finally I found the solution.
Thank you for supplying this information and explaining it so well. I was just about to give up !
thanks alot, it really helped! 😉
Muchisima Gracias Hermano
Many thanks!!! You should be Number one in google search!
A great post, searched for the same information for more than two days!!! great work!
Thanks a lot dude!!! You area genius….
Thanks for your update its working
me have Win 7 and it work on 64bit the access On Office 2010 or 2007 that work On 32 bit not transfer data in VB.Net 2008 Forms instail with office 2007 32bit : “access 2007 engine 32bit” “access 2007 runtime 32bit “ instail with office 2010 32bit : “access 2010 engine 32bit” “access 2010 runtime 32bit “
Navigate to Programs > Administrative Tools > Internet Information Services (IIS) Manager, then look under your machine name > Application Pool Does not appear on Windows 7 Home 64bit sp1: no Internet Information Services Manager on the list under Admin Tools.
hi…………i have the same error but i am not getting the option of Internet Information Services (IIS) Manager in my administrative tool…..plzzzzzzzz…help
if your are getting HTTP Error 404.2, then you also need to migrate the website from Classic mode to Integrated Pipeline mode and activate the 32 bit .Net framework here’s more details http://www.codicode.com/art/the_microsoft_jet_oledb_4_0_prov.aspx
Thanks a lot……..
well, any day now, my application will be up and running thanks to your help
Hi, Reading .xls and .xlsx file was working my local system fine. But same code was showing error on Testing server which is 64 bit. Error: (The ‘Microsoft.Jet.OLEDB.4.0’ provider is not registered on the local machine.) So i tried to change the code : From : Provider=Microsoft.Jet.OLEDB.4.0; Data Source=” file location”; Extended Properties=Excel 8.0;IMEX=1;HDR=yes To: Provider=Microsoft.ACE.OLEDB.12.0;Data Source=file location;Extended Properties=”Excel 12.0;HDR=YES”; So used ACE.OLEDB.12.0 for Reading the .xls file. Now, it is working fine on local and testing server both.
thanks veryyyyyyyyyyyyyyyyyyyyyyyyyyyyyy much
Ah, the 32-Bit switch.. very simple solution, working straight away, thank you.
Thanks a lot.
THANKS SOOOOOOO MUCHHHHHHHHH ….
Thanks, You Know the exact solution.
Thanks man! Solved my issue perfectly!
After three days of battle with is problem. I use windows 2008 64bits .I come across this article. The problem is over.
Nice Article Reference . Thanks for Sharing.
Gracias… que fácil solución, estaba ya todo el día buscando que hacer…
ıts working thanks a lot…
the problem has solved! Many thanks!
Comments are closed.