236 votes

Le fournisseur 'Microsoft.Jet.OLEDB.4.0' n'est pas enregistré sur la machine locale.

J'ai créé une application Windows développée en .NET 3.5 sur un serveur Windows 2008 32 bits. Lorsque j'ai déployé l'application sur un serveur 64 bits, l'erreur "Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine" s'est produite.

Pour résoudre ce problème, j'ai changé la propriété de construction du projet en X86, pour qu'il soit construit en mode 32 bits, et reconstruit le projet dans la machine 32 bits. Mais, le même projet utilise d'autres pilotes de DB (DB2, SQL etc.) pour se connecter à d'autres bases de données. Ainsi, lorsque j'ai déployé mon application à nouveau dans le système d'exploitation 64 bits, l'exception " Attempted to load a 64-bit assembly on a 32-bit platform. "

J'utilise le pilote Microsoft.Jet.OLEDB.4.0 pour lire et écrire dans le fichier Excel (.xls).

288voto

neo Points 1936

J'ai trouvé une solution à ce problème. Le problème que j'ai décrit dans ma question s'est produit essentiellement en raison de l'incompatibilité de l'application Pilote Microsoft.Jet.OLEDB.4.0 dans un système d'exploitation 64 bits.

Donc, si nous utilisons le pilote Microsoft.Jet.OLEDB.4.0 dans un serveur 64 bits, nous devons forcer notre application à être construite en mode 32 bits (Voici la réponse que j'ai trouvée en faisant une recherche approfondie sur ce sujet problème connu ) et cela entraîne la rupture d'autres parties de mon code.

Heureusement, Microsoft a publié une version compatible avec le 64 bit Pilote du système Office 2010 qui peut être utilisé en remplacement du traditionnel pilote Microsoft.Jet.OLEDB.4.0. Il fonctionne aussi bien sur les serveurs 32 bits que sur les serveurs 64 bits. Je l'ai utilisé pour la manipulation de fichiers Excel et il a bien fonctionné pour moi dans les deux environnements. Mais ce conducteur est dans BETA .

Vous pouvez télécharger ce pilote à partir de Microsoft Access Database Engine 2010 Redistribuable

6 votes

Prêtez également une attention particulière aux instructions figurant sur ce lien :)

8 votes

J'ai eu le même problème. J'ai changé la configuration de l'application en x86, puis ça a marché !

18 votes

J'ai également dû modifier la chaîne de connexion en passant de Microsoft.Jet.OLEDB.4.0 à Microsoft.ACE.OLEDB.12.0.

134voto

Jason Wicker Points 1793

Si le problème persiste dans ASP.NET, tout ce que j'ai eu à faire est de changer le paramètre "Activer les applications 32 bits" en True, dans les paramètres avancés du pool d'applications.

0 votes

J'utilisais ODBC 64 bits et ce changement a commencé à me donner une erreur de base de données. Je l'ai cependant corrigé. Si quelqu'un rencontre ce problème, vous devrez installer des pilotes ODBC 32 bits et créer votre DSN dans ces pilotes.

3 votes

Il est tout à fait possible de le faire entièrement en code 64 bits maintenant. Installez le redistribuable lié dans Réponse de Néo puis utiliser la chaîne Provider suggérée dans La réponse d'Iqbal . Ensuite, votez en haut pour ces deux réponses. Et voilà !

0 votes

Cela a résolu le problème pour moi sur Windows Server 2008 R2 après avoir installé la version 32 bits. Redistribution du moteur de base de données Access .

75voto

Iqbal Points 427

J'ai le même problème "

Le fournisseur 'Microsoft.Jet.OLEDB.4.0' n'est pas enregistré sur la machine locale. machine locale

" J'ai appliqué la réponse en neo mais cela n'a pas fonctionné jusqu'à ce que je change le fournisseur en "Provider=Microsoft.ACE.OLEDB.12.0 ;"

J'espère que cela vous aidera si quelqu'un est confronté au même problème.

Merci

7 votes

Nous y sommes ! Pour un serveur 64 bits, installez le redistribuable lié par neo (la variante 64 bits, évidemment), puis changez le fournisseur comme indiqué dans cette réponse, puis ça va marcher.

0 votes

Tu as raison, Romkyns. J'ai déjà dit que j'ai appliqué la solution Néo, puis changé le fournisseur. Mais merci votre commentaire rend les choses plus claires. Merci beaucoup romkyns

1 votes

J'ai remplacé Microsoft.Jet.OLEDB.4.0 par Microsoft.ACE.OLEDB.12.0 ; dans app.config et tout a fonctionné.

22voto

leo Points 91

J'ai le même message, j'ai une page web avec faire sur visual studio 2010, je lis un fichier .xls sur cette page, dans mon projet visuel n'a pas de problème, quand je l'ai mis sur mon IIS local me lancer une Le fournisseur 'Microsoft.Jet.OLEDB.4.0' n'est pas enregistré sur la machine locale. J'ai réglé ce problème en suivant les étapes suivantes,

1.-Ouvrir IIS
2.-Changer l'appPool sur Paramètres avancés
3.-vrai pour permettre à l'application 32 bits.

et c'est tout

ps.j'ai changé Configuration Manager en X86 sur Active Solution Platform

0 votes

Cela force votre application à fonctionner en mode 32 bits. Vous devez désactiver ce paramètre si vous voulez éviter la barrière des 4 Go.

8voto

Kakopappa Points 112

J'ai eu le même problème. J'ai changé la configuration de l'application en x86 puis ça a marché !

1 votes

Comment changer cette configuration ? J'ai créé un projet de type site web

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X