Microsoft.ACE.OLEDB.12.0 Provider can no longer open .mdb under Windows 8

Craig D picture Craig D · Jan 28, 2013 · Viewed 91.7k times · Source

I have an x64 application which uses Microsoft.ACE.OLEDB.12.0 provider to read an MS Access Database on Windows 7 (x64) and it works fine (Office 2010 installed).

The same application running under Windows 8 with Office 2013 installed, fails with a message saying that the provider cannot open previous versions.

Under Windows 8 with Office 2013 installed, there is also Microsoft.ACE.OLEDB.15.0, but I have double checked my code and certain that it is specifying the 12.0 in the connection string.

Are there different "versions" of this provider -or is there something I've missed?

I have recompiled a test program under Windows 8 for using x86 platform, and changed the provider to Microsoft.Jet.OLEDB.4.0 and it all works again. Unfortunately, the module is part of a bigger ecosystem that needs to be able to be run under x64 (specifically an plug in to excel), and the access database is downloaded by the suite from a supplier's web site by the application, so it is not practical to convert the database or change everything to x86.

Thanks in advance.

Answer

Craig D picture Craig D · Jan 28, 2013

It occurred to me to check the versions of files being used for each provider, and hunting through the registry, found that under a clean Windows 8 install, with Office 2013 installed, both providers point to the same assembly.

(C:\Program Files\Common Files\microsoft shared\OFFICE15\ACEOLEDB.DLL)

I then downloaded and ran the Microsoft Access Database Engine Redistributable (http://www.microsoft.com/en-us/download/details.aspx?id=13255) which then installed the proper version of the 12.0 provider into C:\Program Files\Common Files\microsoft shared\OFFICE14\ACEOLEDB.DLL and the application is behaving itself as expected.

It would seem strange that MS have included a provider branded as 12.0 that doesn't behave like 12.0 any more.

Anyway - hope that helps someone from 4-5 hours of hair pulling...

Craig