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

6

12

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.

Focus answered 28/1, 2013 at 12:58 Comment(0)
F
15

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

Focus answered 28/1, 2013 at 13:41 Comment(2)
This worked for me. Same setup. Windows 8, 64 bit, Office 2013.Olin
@Craig D: Could you please check out my issue? It's very similar though I couldn't solve it your way. Maybe you have an idea.Resonant
P
5

The problem with installing the older ACE redistributable is that the next time you run Access in Office 2013, Office will "repair" itself and switch the pointer for version 12 back to the Office15 directory.

Philbo answered 10/6, 2014 at 18:13 Comment(1)
Welcome to SO. For future reference you may consider that this answer is better sited as a comment, so when you get more points, keep this in mind in order to avoid being downvoted.Almallah
R
4

Just to clarify the behavior described by OP:

With Office 2013 (ACE 15.0) Microsoft cancelled support for mdb-Files created with Jet 3.x and before (that is, Access 97 and earlier). I therefore strongly assume that the OP's database that caused the problem was an Access97-DB. Jet 4.0 databases (Access 2000, aslo .mdb) are still supported and will not produce any errors.

The fact that Office 2013 also registers its newer drivers as earlier versions is a deliberate attempt from MS to keep many programs and scripts working, that have a hard-coded provider name built in. As you recognized on your upgrade, this only keeps many working, not all...

Ruble answered 23/5, 2014 at 8:12 Comment(0)
L
4

I'm using Windows 8.1 64bit and Microsoft Office 2013 I Installed "Microsoft Access Database Engine 2010 Redistributable" but Nothing Changed and a got the same error BUT ! Installing the "2007 Office System Driver: Data Connectivity Components" solved the Problem.

I found this solution through this link.

trying to connect to an Access database in visual studio but keep getting this error?

try installing this first: http://www.microsoft.com/download/en/details.aspx?id=13255

however if, like me, that doesnt work for you, try the following method:

NOTE: this DOES work for office 2010 even though it is for 2007 office, dont ask me why it just does :)

  1. download and install this: http://www.microsoft.com/download/en/confirmation.aspx?id=23734

  2. in VS click add data source, follow the wizard and enjoy! :)

Loxodromic answered 4/6, 2014 at 14:15 Comment(0)
M
1

In addition, it seems the 32 bit version of the Redistributable works for Office 2013_64 bit on a 64bit Windows OS whereas the 64 bit version of the Redistributable didn't in my case

Mechanism answered 12/8, 2013 at 12:37 Comment(1)
Office 2013 installs as 32-bit by default even on a 64-bit machineMinorca
T
1
  1. Install Microsoft Access Database Engine 2010 Redistributable x 64(http://www.microsoft.com/en-us/download/details.aspx?id=13255)
  2. convert Your data base to new format (.mdb -> .accdb)
  3. Search entire project for "Microsoft.Jet.OleDb.4.0" and replace it by Microsoft.ACE.OLEDB.12.0
Towhead answered 16/4, 2015 at 22:34 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.