web-dev-qa-db-fra.com

Le fournisseur Microsoft.ACE.OLEDB.12.0 ne peut plus ouvrir .mdb sous Windows 8

J'ai une application x64 qui utilise le fournisseur Microsoft.ACE.OLEDB.12.0 pour lire une base de données MS Access sur Windows 7 (x64) et cela fonctionne correctement (Office 2010 installé).

La même application fonctionnant sous Windows 8 avec Office 2013 installé échoue avec un message indiquant que le fournisseur ne peut pas ouvrir les versions précédentes.

Sous Windows 8 avec Office 2013, il y a aussi Microsoft.ACE.OLEDB.15.0, mais j'ai vérifié mon code et je suis certain qu'il spécifie le 12.0 dans la chaîne de connexion.

Existe-t-il différentes "versions" de ce fournisseur - ou y a-t-il quelque chose que j'ai oublié?

J'ai recompilé un programme de test sous Windows 8 pour utiliser la plate-forme x86 et modifié le fournisseur en Microsoft.Jet.OLEDB.4.0. Tout fonctionne à nouveau. Malheureusement, le module fait partie d'un écosystème plus vaste qui doit pouvoir être exécuté sous x64 (en particulier un plug-in pour Excel), et la base de données d'accès est téléchargée par la suite à partir du site Web du fournisseur et par l'application. pas pratique de convertir la base de données ou de tout changer en x86.

Merci d'avance.

12
Craig D

Il m’est venu à l’esprit de vérifier les versions des fichiers utilisés pour chaque fournisseur et lors de la recherche dans le registre, qu’après une installation propre de Windows 8 avec Office 2013 installée, les deux fournisseurs pointaient vers le même assemblage.

(C:\Programmes communs\Fichiers communs\Microsoft partagés\OFFICE15\ACEOLEDB.DLL)

J'ai ensuite téléchargé et exécuté Microsoft Access Database Engine Redistributable ( http://www.Microsoft.com/en-us/download/details.aspx?id=13255 ), qui a ensuite installé la version appropriée du fournisseur 12.0 dans C:\Programmes communs\Fichiers communs\Microsoft partagés\OFFICE14\ACEOLEDB.DLL et l’application se comporte comme prévu.

Il semblerait étrange que MS ait inclus un fournisseur de marque 12.0 qui ne se comporte plus comme telle.

Quoi qu'il en soit - espérons que cela aidera quelqu'un après 4-5 heures de traction de cheveux ...

Craig

16
Craig D

Le problème de l'installation de l'ancienne version redistribuable de l'ACE est que, lors de la prochaine exécution d'Access dans Office 2013, Office se "réparera" lui-même et remettra le pointeur de la version 12 dans le répertoire Office15.

5
Chris I

J'utilise Windows 8.1 64 bits et Microsoft Office 2013 J'ai installé "Le moteur de base de données Microsoft Access 2010 redistribuable" mais rien n'a changé et j'ai la même erreur, MAIS! L'installation du "2007 Office System Driver: Composants de connectivité de données" a résolu le problème.

J'ai trouvé cette solution à travers ce link .

essayez de vous connecter à une base de données Access dans Visual Studio, mais conservez obtenir cette erreur?

essayez d’installer ceci en premier: http://www.Microsoft.com/download/en/details.aspx?id=13255

cependant, si, comme moi, cela ne fonctionne pas pour vous, essayez ce qui suit méthode:

REMARQUE: cela fonctionne pour office 2010 même s'il est pour 2007 bureau, ne me demandez pas pourquoi il suffit :)

  1. téléchargez et installez ceci: http://www.Microsoft.com/download/fr/confirmation.aspx?id=23734

  2. dans VS cliquez sur Ajouter une source de données, suivez l’assistant et profitez-en! :)

4
Mahdi Rashidi

Juste pour clarifier le comportement décrit par OP:

Avec Office 2013 (ACE 15.0), Microsoft a annulé la prise en charge de mdb-Files créés avec Jet 3.x et versions antérieures (c'est-à-dire, Access 97 et versions antérieures). Je suppose donc fortement que la base de données de l'OP qui a causé le problème était un Access97-DB. Les bases de données Jet 4.0 (Access 2000, ainsi que .mdb) sont toujours prises en charge et ne généreront aucune erreur.

Le fait qu'Office 2013 enregistre également ses pilotes les plus récents en tant que versions antérieures est une tentative délibérée de MS de faire fonctionner de nombreux programmes et scripts dotés d'un nom de fournisseur codé en dur. Comme vous l'avez reconnu lors de votre mise à niveau, cela ne conserve beaucoup travaillant, pas tous ...

3
Stefan
  1. Installez Microsoft Access Database Engine 2010 redistribuable x 64 ( http://www.Microsoft.com/en-us/download/details.aspx?id=13255 )
  2. convertir votre base de données au nouveau format (.mdb -> .accdb)
  3. Recherchez le projet entier "Microsoft.Jet.OleDb.4.0" et remplacez-le par Microsoft.ACE.OLEDB.12.0
1
user

De plus, il semble que la version 32 bits du Redistribuable fonctionne pour Office 2013_64 bits sur un système d'exploitation Windows 64 bits, alors que la version 64 bits du Redistribuable ne fonctionnait pas dans mon cas.

1
Damilola