"Microsoft.ACE.OLEDB.12.0' fournisseur n'est pas enregistré sur la machine locale

j'essaie d'obtenir des données à partir D'un fichier Excel sur un événement de clic de bouton. Ma chaîne de connexion est:

 string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:sourceSiteCore65Individual-Data.xls;Extended Properties=Excel 8.0;";

quand je clique sur le bouton, j'obtiens l'erreur suivante:

La " De Microsoft.ACE.OLEDB.12.0' fournisseur n'est pas enregistré sur la machine locale.

Je ne sais pas comment réparer ça. Mon système d'exploitation est Windows 7.

297
demandé sur Md. Suman Kabir 2011-07-11 15:23:56

30 réponses

Eh bien, vous devez l'installer. Vous cherchez:

393
répondu Variant 2017-05-04 11:55:12

une version 64 bits du 'moteur de base de données Microsoft Access 2010 Redistribuable' qui vous permettra d'utiliser le 'Microsoft.ACE.OLEDB.12.0 ' provider est disponible ici:

http://www.microsoft.com/en-us/download/details.aspx?id=13255

si vous utilisez le téléchargement de la réponse acceptée, vous aurez besoin de construire pour x86, comme souligné par @backtestbroker.com.

118
répondu rsbarro 2013-02-22 19:53:33

en fonction de l'application (32 / 64bit) en utilisant la connexion, vous pouvez juste installer

résumé:

  • tous les bureaux de 2007-2016 contiennent le fournisseur " Microsoft.ACE.Oledb.12,0"
  • selon l'architecture de votre application, choisissez le moteur d'exécution approprié (32/64)
  • vérifiez vos fournisseurs avec la powershell-commande de 32 et 64bit shell :

    (New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION 
    
  • et vous verrez quel fournisseur votre système peut utiliser

la longue histoire: les cordes peuvent être trouvées avec http://live.sysinternals.com/strings.exe

par exemple. sur un système 64bit avec 32 pilotes

strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\microsoft shared\OFFICE12\MSO.DLL" | findstr "ACE.O"
strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\microsoft shared\OFFICE14\MSO.DLL" | findstr "ACE.O"
strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\microsoft shared\OFFICE15\MSO.DLL" | findstr "ACE.O"

même dans le bureau à venir 2016

c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX64\Microsoft Shared\OFFICE16\MSO.DLL
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\OFFICE16\MSO.DLL

vous trouverez les cordes

  • de Microsoft.ACE.OLEDB

  • de Microsoft.ACE.Oledb.12,0

l'Office 2013 est également livré avec csi.dll

c:\Program Files (x86)\Common Files\microsoft shared\OFFICE15\Csi.dll
c:\Program Files\Common Files\Microsoft Shared\OFFICE15\Csi.dll

qui contient le Microsoft.ACE.OLEDB.15,0

et Office 2016

c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX64\Microsoft Shared\OFFICE16\Csi.dll
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\OFFICE16\Csi.dll

qui a le " Microsoft.ACE.OLEDB.16.0 "version

48
répondu Bernhard 2018-09-25 13:39:47

J'ai eu cette erreur/exception dans Visual Studio 2010 quand j'ai changé ma construction dans la boîte de dialogue du Gestionnaire de Configuration de" x86 "à"N'importe quel CPU". Ce pilote de base de données OLEDB ne fonctionne que sur x86 et n'est pas compatible 64bit. Changer la configuration de construction de nouveau à x86 résolu le problème pour moi.

29
répondu backtestbroker.com 2013-02-15 19:42:27

la première chose que vous devez vérifier est votre configuration de construction de votre application.

  • si vous avez construit votre projet sous la plate-forme x86 , alors pour résoudre tout problème, vous devez installer les paquets suivants sur votre machine:

    1. afin d'utiliser le 'Microsoft.ACE.OLEDB.12.0' fournisseur, vous devez installer le moteur de base de données Microsoft Access 2010 Redistribuable tout d'abord, cette installation est disponible à: http://www.microsoft.com/download/en/details.aspx?id=13255 .

      une fois l'installation terminée, essayez de lancer votre application, si celle-ci résout la question excellent, si non, continuer à l'étape 2.

    2. la prochaine étape, c'est le inexpliquée solution de contournement, qui travaille pour le Bureau 2010, même s'il s'agit des composants de connectivité de données of Office 2007. Je ne sais pas très bien pourquoi cela fonctionne, mais cela fonctionne et cela s'est avéré efficace dans presque tous les cas. Vous avez besoin de installer le pilote de système de bureau 2007: Composants de connectivité de données , cette installation est disponible à: http://www.microsoft.com/download/en/confirmation.aspx?id=23734 .

      après cette installation est terminée, essayez d'exécuter votre application, cela devrait résoudre le problème.

  • si vous essayez d'exécuter une application construite sous x64 ou AnyCPU plate-forme , je recommande d'abord de valider qu'il fonctionne comme prévu sous la plateforme x86. Dans le cas où il ne fonctionne pas sous que x86 plate-forme, effectuer les étapes dans la première partie et valider que il s'exécute comme prévu.

    j'ai bien lu que les pilotes MS Access incluant la base de données OLEDB conducteur de travaux seulement sous la plate-forme x86 et est incompatible sous la plateforme x64 ou AnyCPU. Mais cela semble être faux. Je validé mon application était en cours d'exécution lors de la construction de x86, puis je installé le moteur de base de données D'accès en utilisant le drapeau passif.

    1. télécharger le fichier localement vous pouvez télécharger l'installation ici: http://www.microsoft.com/en-us/download/details.aspx?id=13255
    2. installation utilisant le l'invite de commande avec le '/passive'. In l'invite de commande, exécutez la commande suivante: "AccessDatabaseEngine_x64.exe /passif "

    après ces 2 étapes, j'ai réussi à lancer mon application après avoir construit en configuration de construction x64 ou AnyCPU. Cela semblait résoudre mon problème.

Remarque: L'ordre des étapes semble faire une différence, donc veuillez suivre en conséquence.

28
répondu Merav Kochavi 2015-09-24 11:29:37

j'ai installé les pilotes MS et ça n'a pas marché pour moi. Puis j'ai trouvé ce billet de blog qui a résolu le problème. Lisez-le ici, sinon utilisez ces deux images (liées à partir de ce post) comme le TLDR sumamary:

enter image description here

enter image description here

17
répondu Shaul Behr 2015-09-09 10:56:48

pour tous ceux qui sont encore affectés par ce phénomène.

j'ai eu l'erreur...

OLEDB error "The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine."

... comme décrit par L'OP, Shailesh Sahu.

J'ai 64bit Windows 7.

mon problème est dans les scripts PowerShell , mais utilise une chaîne de connexion, similaire au post de L'OP, donc j'espère que mes conclusions peuvent être appliquées à C#, PowerShell et tout autre langage en s'appuyant sur le "Microsoft.ACE.OLEDB " driver.

j'ai suivi les instructions sur ce forum MS thread: http://goo.gl/h73RmI

j'ai d'abord essayé d'installer la version 64bit , puis d'installer la version 32bit du moteur de base AccessData.exe de cette page http://www.microsoft.com/en-us/download/details.aspx?id=13255

Mais toujours pas de joie.

j'ai alors couru le code ci-dessous dans PowerShell (du site de SQL Panda http://goo.gl/A3Hu96 )

(New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION 

...qui m'a donné ce résultat (j'ai enlevé d'autres sources de données pour brièveté)...

SOURCES_NAME              SOURCES_DESCRIPTION                                                                       
------------              -------------------                                                                       
Microsoft.ACE.OLEDB.15.0  Microsoft Office 15.0 Access Database Engine OLE DB Provider

comme vous pouvez le voir, J'ai Microsoft.ACE.OLEDB. 15 .0 (quinze) pas Microsoft.ACE.OLEDB. 12 .0 (douze)

donc, j'ai modifié ma chaîne de connexion à 15 et ça a marché.

donc, un aperçu rapide de PowerShell pour démontrer comment soft-code la version...

$AceVersion = ((New-Object System.Data.OleDb.OleDbEnumerator).GetElements() | Where-Object { $_.SOURCES_NAME -like "Microsoft.ACE.OLEDB*" } | Sort-Object SOURCES_NAME -Descending | Select-Object -First 1 SOURCES_NAME).SOURCES_NAME

$connString = "Provider=$AceVersion;Data Source=`"$filepath`";Extended Properties=`"Excel 12.0 Xml;HDR=NO`";"

modifié pour choisir la dernière version D'ACE, si plus d'un

avec un peu de chance, n'importe qui trouvant cela peut maintenant vérifier quelle version D'OLEDB est installée et utiliser le numéro de version approprié.

13
répondu TechSpud 2015-04-11 00:40:58

si vous utilisez 64-bit mais que vous avez toujours des problèmes même après l'installation AccessDatabaseEngine, voir ce post , il a résolu le problème pour moi.

c'est à dire que Vous devez installer ce AccessDatabaseEngine

13
répondu Aximili 2016-04-14 10:13:39

vous devez changer la plate-forme de Solution de" N'importe quel CPU "à" x86 "ou" x64 " basé sur la bitness de l'installation de bureau.

les étapes sont indiquées ci-dessous:

  1. clic droit sur le fichier Solution dans Solution Explorer: enter image description here

    1. cliquez sur le Gestionnaire de Configuration.
    2. cliquez sur la plate-forme Active Si x86 est déjà là, sélectionnez-le, sinon cliquez sur Nouveau. enter image description here

    3. sélectionnez x86 ou x64 dans la liste déroulante de la nouvelle plate-forme: enter image description here

compilez et lancez votre application.

5
répondu mohit busa 2016-09-29 01:12:44

si le "AccessDatabaseEngine" installé n'aide toujours pas, voici la solution:

vous devez changer la plate-forme de Solution Active de" N'importe quel CPU "à"x86".

le fournisseur D'OLEDB N'est pas enregistré sur la Machine locale

De CodeProject.com

3
répondu syp_dino 2013-06-24 14:05:57

syp_dino,

la solution pour moi comme vous avez suggéré pour le " Microsoft.ACE.OLEDB.12.0' fournisseur n'est pas enregistré sur la machine locale" l'erreur, c'est changer de Plate-forme de Solution de "any CPU" à "x86".

quand j'ai effectué ces étapes, reconstruit la solution, pris L'EXE et placé sur le réseau, tout a fonctionné en douceur sur la machine Windows 7 64 bits.

3
répondu Sevron Ghee 2014-06-26 14:20:03

si vous déboguez un projet web, assurez-vous simplement que IIS Express s'exécute en 32 ou 64 bits selon les paramètres de votre projet.

Goto

Outils > Options > projets et Solutions > projets Web

et de là, Vérifiez (ou décochez) la version 64 bits de IIS Express...

3
répondu Albert Zakhia 2016-07-13 05:23:23

j'ai un problème similaire lorsque nous lisons le fichier Excel.

Histoire de la question:

nous avons récemment migré notre application de 32-bit à 64-bit en raison de l'exigence de mémoire. Pour cela, nous avons migré Notre windows 7 de 32-bit à 64-bit. Mais nous avons quand même installé un bureau 32 bits sur nos machines.

parce que, de cela, nous avons eu ce problème lors de l'importation de données Excel dans l'application.

Solution,

j'ai téléchargé la version 64 bits du http://www.microsoft.com/en-us/download/details.aspx?id=13255 et installé avec argument comme,

AccessDatabaseEngine_x64.exe / passif

sans changement de code, mon problème est résolu.

Note:

sur OS 64-bit et bureau 64-bit, ma fonctionnalité fonctionnait très bien sans cette correction. Ce correctif n'est requis lors de l' notre application est 64-bit tournant sur 64-bit OS qui a 32-bit office installé sur elle.

2
répondu Rahul Techie 2015-02-13 09:11:48

j'ai pu corriger cela en suivant les étapes dans cet article: http://www.mikesdotnetting.com/article/280/solved-the-microsoft-ace-oledb-12-0-provider-is-not-registered-on-the-local-machine

le point clé pour moi était ceci:

lors du débogage avec IIS,

par défaut, Visual Studio utilise la version 32 bits. Vous pouvez modifier ce de L'intérieur de Visual Studio en allant Outils "Options" Projets Et Solutions "projets Web" général, et choisir

"utiliser la version 64 bits de IIS Express pour les sites Web et les projets"

après avoir vérifié cette option, puis réglé la cible plate-forme de mon projet à" N'importe quel CPU " (Je l'avais réglé sur x86 quelque part dans le processus de dépannage), j'ai pu surmonter l'erreur.

2
répondu Ken Johnson 2015-11-30 18:51:00

il suffit de télécharger et d'installer le moteur D'accès DB suivant (X86 ou X64: selon la configuration de votre machine) et voir la magie:)

https://www.microsoft.com/en-us/download/confirmation.aspx?id=13255

2
répondu Biki 2017-04-07 10:31:56

j'ai eu ce problème en essayant d'importer des données à partir d'un fichier excel (xlsx) dans une base de données SQL Server en utilisant SSMS 2014.

Le Pilote d'Office System 2007: Composants de Connectivité des Données installer a fait le tour pour moi.

2
répondu Taran 2017-04-12 06:54:20

Vérifiez D'abord quelle version de microsoft.Ace.oledb.12.0 est installé dans votre système.

Check in below path C:\Program fichiers\Common Files \ Microsoft Shared\OFFICE14\ACEOLEDB.DLL --64 bit est installé

Check in below path C:\Program fichiers (x86)\Common Files\Microsoft Shared\OFFICE14\ACEOLEDB.DLL --x86 bit est installé

si (x86) est installé, puis en utilisant la plate-forme de changement de gestionnaire de configuration de la solution à x86, pour x64 changement de x64.

si non disponible, installer en utilisant le lien ci-dessous

https://www.microsoft.com/en-us/download/details.aspx?id=23734

2
répondu Shubham Tiwari 2017-12-20 07:55:19

j'ai suivi les instructions données par d'autres; installer ce patch, installer ce patch ainsi que le moteur de base de données Microsoft Access 2010.

mon problème était que j'utilisais la même bibliothèque (linq2sql) dans 2 sites sur ma machine; 1 fonctionne et 1 ne fonctionne pas.

finalement, j'ai découvert que je devais "activer les applications 32 bits" dans les paramètres avancés de l'apppool pour mon site non fonctionnel.

Tout fonctionne bien maintenant.

1
répondu Ads 2014-08-07 01:48:59

peut également essayer ces étapes

dans le serveur SQL, 1.Ouvrir une base de données 2.Clic dans L'option 'Server Obtect' 3.Cliquez sur "Serveurs liés" 4.Cliquez sur "Fournisseurs" 5.Clic Rigth dans ' Microsoft.ACE.OLEDB.12,0" 6.Décocher toutes les options et fermer

1
répondu Diego Castro 2015-03-18 19:35:42

N'oubliez pas d'installer AccessDatabaseEngine sur le serveur pour l'application web.

1
répondu sosha 2015-08-30 05:15:41

j'ai eu le même problème mais dans ce cas microsoft-ace-oledb-12-0-le fournisseur a déjà été installé sur ma machine et fonctionne très bien pour d'autres applications développées.

la différence entre ces applications et celle avec laquelle j'avais le problème était que les anciennes Applications tournaient sur " Local IIS " alors que celle avec erreur était sur " IIS Express (courant à partir de Visual Studio"). Donc, ce que j'ai fait était -

  1. clic droit sur le nom du projet.
  2. Aller à "Propriétés de la 1519130920"
  3. allez à L'onglet Web à droite.
  4. sous Serveurs sélectionnez IIS Local et cliquez sur le bouton Créer un répertoire virtuel.
  5. exécuter l'application à nouveau et il a fonctionné.
1
répondu NetStarter 2015-10-23 06:48:05

j'avais Microsoft Access Database Engine 2010 Redistribuable déjà installé sur ma machine, mais recevait toujours le Microsoft ACE OLEDB Provider erreur.

puis j'ai rappelé que j'avais mis à niveau à Office 2016 récemment, donc, peut-être que je devrais essayer de réinstaller Microsoft Access Database Engine 2010 Redistribuable . Et ça a réglé le problème sur ma machine.

Donc, si vous avez mis à niveau vers une version différente de MS Office ou même réparé/réinstallé votre MS Office, puis essayer de réinstaller Microsoft Access Database Engine 2010 Redistribuable avant de perdre du temps à trouver d'autres correctifs. Bonne chance!

1
répondu Sagar 2016-04-18 18:39:14

1.) Vérifiez votre chaîne de connexion avec ConnectionStrings.com .

2. Assurez-vous que le bon moteur de base de données installé. Ce sont les deux moteurs de base de données qui m'ont aidé.

Microsoft Access Database Engine 2010 Redistribuable

Pilote D'Office System 2007: Composants De Connectivité Des Données

3.) Il pourrait y avoir un problème avec votre plate-forme cible de construction étant "N'importe quel CPU", il pourrait devoir être "X86" (propriétés, construire, cible de plate-forme).

1
répondu u8it 2017-01-27 19:01:04

si vous obtenez cette erreur en essayant D'utiliser ACE à partir d'un ASP.NET application, la cause la plus probable est que vous avez installé l'une des versions 32 bits. Par défaut, IIS sur un système d'exploitation 64 bits exécutera des applications dans un processus de travail 64 bits. Les processus 64 bits ne peuvent pas charger les DLLs 32 bits. Lorsqu'un appel est fait au fournisseur ACE, le processus 64 bits tentera de localiser une DLL 64 bits. S'il n'existe pas, vous obtenez le message d'erreur qui vous a amené ici.

Dans ce cas, vous avez deux options. Tout d'abord, vous pouvez installer la version 64 bits 2010. Si vous avez la version 32 bits de 2007 installée, vous pouvez simplement installer la version 64 bits de 2010 à côté. Si vous avez la version 32 bits de 2010 installée, vous devez la désinstaller et télécharger et installer la version 64 bits de 2010 à la place. Vous ne pouvez pas avoir les versions 32 et 64 bits du fournisseur 2010 installés en même temps. Si vous effectuez l'installation sur votre développement machine, vous pouvez également être limité par le bit-ness de toutes les installations de bureau existantes.

la deuxième option est de changer le pool d'applications dans IIS pour activer les applications 32 bits. Si vous utilisez la version complète du SII, vous pouvez utiliser l'outil de gestion pour ce faire (Gestionnaire du Panneau de contrôle "Outils administratifs" des services D'Information Internet (SII)).

pour plus de renseignements, veuillez consulter ci-dessous lien

1
répondu Prince Antony G 2017-05-09 07:40:01

j'ai fait face à ce même problème. Allez aux propriétés de la Solution et changez N'importe quel CPU en x86, je pense qu'il fera le travail.

1
répondu Md Shahriar 2018-07-20 18:22:35

Ça dépend avec l'office que vous avez installé si vous avez x64 bits d'office, alors vous devez compiler l'application comme un x64 pour lui permettre d'exécuter, donc si vous voulez qu'il fonctionne sur x36 ensuite, vous devez installer office x86 d'accepter, j'ai essayé toutes les solutions ci-dessus, mais aucune n'a fonctionné jusqu'à quand j'ai réalisé que j'avais bureau x64bit et j'ai donc intégré l'application comme x64 et travaillé

0
répondu Maina Wycliffe 2015-04-12 18:11:00
  • j'ai été confronté au même problème pendant des jours. Je n'ai installé le pilote OLEDB pilotes pour 64 bits, essayé 32 bits aussi qui sont disponibles à site web de microsoft.
  • j'ai essayé de réinstaller office 64bit version aussi d'une certaine manière, il ne fonctionne pas. Essayé D'Autoriser l'application 32bit dans le pool IIS vrai.
  • a essayé de changer l'environnement du projet en X86, AnyMachine, mixte. Et presque tout essayé le patch que j'ai pu trouver sur internet. Mais tous les solution déçu de moi.
  • bien que j'ai finalement appris que le fournisseur que nous téléchargions était la dernière et ne fonctionnait pas avec elle, soit.
  • Je l'ai désinstallé et j'ai installé des pilotes oledb 14.0.7015.1000 .Je n'ai pas le lien pour que je l'ai eu à partir des ressources d'entreprise , vous pourriez avoir à google, mais il fonctionne. Je suis venu sur ce lien de téléchargement de microsoft et il en fait trop... cependant, il est la version 14.0.6119.5000 mais il a fonctionné.
0
répondu Maulik Modi 2016-01-05 10:32:51

j'ai reçu cette erreur lors de l'importation de données D'un fichier Excel dans MS-SQL. Le fournisseur était déjà installé (64 bits) et cela m'a surpris pourquoi cela n'a pas fonctionné. Tout ce que j'ai fait, c'est localiser l'application Import/Export utilisée ici, c'est-à-dire la .EXE. Et je l'ai trouvé à

C:\Program fichiers\Microsoft SQL Server\130\DTS\Binn\DTSWizard.exe

j'ai alors couru le .exe directement pour effectuer l'importation de données. Et cela a fonctionné!

0
répondu Chagbert 2017-09-12 08:36:06

La façon dont je l'ai résolu sur différents ordinateurs:

j'ai une machine Windows 7 32bit avec Visual Studio 2012 qui n'avait pas la base de données D'accès parce que je n'ai pas L'Office 2010. J'ai copié la même source que J'avais dans ma machine Windows 7 64bit.

donc, j'ai installé le moteur AccessDatabaseEngine dans cette machine Windows 7 32 bits après l'avoir téléchargé les suggestions ci-dessus des autres ici et tout a bien fonctionné.

j'ai toujours eu le problème sur ma machine Windows 7 64 bits qui a déjà Office 2010 qui inclut déjà Access 2010. La façon dont j'ai résolu sur cet ordinateur était en entrant dans le projet, les propriétés sélectionnées, et à la cible plate-forme avait tout CPU j'ai vérifié préfèrent 32 bits. Recompiled / Build et Microsoft.ACE.OLEDB.12.0 ' fournisseur n'est pas enregistré sur le message machine locale était parti.

0
répondu Humbert 2017-11-02 00:07:29

ça a marché pour moi en ce moment.

  1. Visite cette page puis télécharger ce package approprié pour votre ordinateur (AccessDatabaseEngine.exe ou AccessDatabaseEngine_X64.exe) 151960920"
  2. installez ça.
  3. Enjoye... Vos codes fonctionnent maintenant...

mais pour votre dossier d'application vous pouvez utiliser les solutions suivantes:

  1. go in "C:\Program fichiers (x86)\Fichiers communs\Microsoft partagés" ou "C:\Program fichiers\Common Files \ Microsoft partagés" et de mettre le Répertoire" OFFICE14 " dans le même emplacement de votre fichier package.

ou

  1. annexez deux projets (à la rubrique 1) à votre trousse d'installation.
0
répondu Mohammad Fathi MiMFa 2018-06-27 10:05:50