J'ai créé une application Windows développée en .NET 3.5 sur un serveur Windows 2008 32 bits. Lorsqu'elle est déployée sur un serveur 64 bits, elle affiche l'erreur «Le fournisseur Microsoft.Jet.OLEDB.4.0 'n'est pas enregistré sur la machine locale».
Donc, pour résoudre ce problème, j'ai changé la propriété de construction du projet en X86, de sorte qu'il se construise en mode 32 bits et reconstruise le projet dans la machine 32 bits. Mais, le même projet utilise d'autres pilotes de base de données (DB2, SQL, etc.) pour se connecter à d'autres bases de données. Ainsi, lorsque j'ai déployé à nouveau mon application dans le système d'exploitation 64 bits, il lève l'exception «Tentative de chargement d'un assemblage 64 bits sur une plate-forme 32 bits».
J'utilise le pilote Microsoft.Jet.OLEDB.4.0 pour lire et écrire dans Excel (.xls)
Si le problème persiste dans ASP.NET, tout ce que j'avais à faire était de changer le paramètre «Activer les applications 32 bits» sur Vrai, dans les paramètres avancés du pool d'applications.
la source
J'ai le même problème
J'ai appliqué la réponse de neo mais cela n'a pas fonctionné tant que je n'ai pas changé le fournisseur en "Provider = Microsoft.ACE.OLEDB.12.0;"dans la chaîne de connexion.
J'espère que cela aidera si quelqu'un est confronté au même problème.
la source
Je sais que ce sont des questions assez anciennes et de nombreuses personnes y ont répondu. mais je résume les choses pour comprendre:
Si l'extension de fichier est xls et que le système d'exploitation est 32 bits, vous seul pouvez utiliser "
Microsoft.Jet.OLEDB.4.0
". Microsoft n'a pas publié la version 64 bits de ce pilote.Si l'extension de fichier est xlsx ou que le système d'exploitation est 64 bits, vous devez utiliser "
Microsoft.ACE.OLEDB.12.0
". L'application compilée en mode 32/64 bits n'impacte pas la sélection du pilote.Installez toujours le pilote 64 bits
Microsoft.ACE.OLEDB.12.0
sur OS 64 bits. Si vous avez déjà installé Office 32 bits, vous devez exécuter le pilote à partir de cmd avec l'argument / passive. Ce hack fonctionne jusqu'à Office 2013 uniquement, Microsoft a arrêté cette solution de contournement à partir d'Office 2016 pour les pilotes Microsoft.ACE.OLEDB.16.0.Télécharger les pilotes Microsoft.ACE.OLEDB.12.0
Si l'application est compilée avec l'indicateur AnyCPU, elle recherchera les pilotes d'accès 64 bits sur OS 64 bits et les pilotes d'accès 32 bits sur OS 32 bits.
la source
J'ai le même message, j'ai une page Web avec faire sur visual studio 2010, j'ai lu un fichier.xls sur cette page, dans mon projet visuel n'a aucun problème, quand je le mets sur mon IIS local, lancez-moi un 'Microsoft .Jet.OLEDB.4.0 'Le fournisseur n'est pas enregistré sur la machine locale' , j'ai résolu ce problème en suivant ces étapes,
1.-Ouvrez IIS
2.-Modifiez l'appPool dans les paramètres avancés
3.-true pour activer l'application 32 bits.
et c'est tout
ps J'ai changé Configuration Manager en X86 sur Active Solution Platform
la source
Si votre application s'exécute sur localIIS, vous pouvez résoudre ce problème en activant les applications 32 bits dans les paramètres avancés d'AppPool.
la source
J'ai eu le même problème. J'ai changé la configuration de l'application en
x86
, puis cela a fonctionné!la source
Je viens de changer ma propriété de projet au format x64
Projet ---> Propriétés ---> Construire ---> Framework cible ---> X64
la source
Nous avons rencontré ce problème dans l'application de bureau.
Environnement de développement: Windows 7 Ultimate - 64 bits .Net Framework 4.5 Provider = Microsoft.Jet.OLEDB.4.0
Il a été résolu en changeant la cible de la plate-forme en X86 à partir de n'importe quel processeur. Propriétés du projet >> Build >> Platform Target.
la source
J'ai rencontré ce problème avec mon application de bureau (le fournisseur «Microsoft.Jet.OLEDB.4.0» n'est pas enregistré sur la machine locale). Je n'avais pas la possibilité de créer une application 32 bits. En espérant que cela aiderait les autres dans la même situation.
J'ai fait ce qui suit et le problème a disparu:
Installation de la version 64 bits de Microsoft Access Database Engine 2010 Redistributable , comme suggéré par neo
J'ai changé mon fournisseur en Microsoft.ACE.OLEDB.12.0
la source
Bien qu'une solution plus optimale consiste simplement à recompiler comme suggéré ci-dessus, cela nécessite un accès au code source. Dans mon cas, je n'avais que le .exe fini et je devais utiliser cette solution. Il utilise à
CorFlags.exe
partir du SDK .Net pour modifier les caractéristiques de chargement de l'application.CorLibs.exe
suffit de vérifier les outils de développement Windows .CorFlags.exe
. Pour mon installation du SDK .Net Framework 3.5, c'était àC:\Program Files\Microsoft SDKs\Windows\v7.0\Bin
.path/to/CorFlags.exe path/to/your/exeFile.exe /32Bit+
.Vous avez terminé! Cela définit les indicateurs de démarrage de votre programme afin qu'il démarre en mode WOW64 32 bits et puisse donc accéder à microsoft.jet.oledb.4.0.
la source
Modification des paramètres avancés du pool d'applications Paramètres IIS Activer l'application 32 bits
la source
Changez simplement la propriété en fonction de votre machine et tout est fait :-)
Projet ---> Propriétés ---> Construire ---> Framework cible ---> X64
ou
Projet ---> Propriétés ---> Construire ---> Framework cible ---> X86
la source
J'ai changé ma chaîne de connexion de
var myConnectionString = string.Format ("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = {0}; Persist Security Info = True; Jet OLEDB: Database Password =;", gisdbPath);
pour ça:
var myConnectionString = string.Format ("Provider = Microsoft.Jet.OLEDB.4.0; Mode = Share Deny None; Data Source = {0}; user id = Admin; password =;", gisdbPath);
Cela fonctionne parce que je n'ai jamais demandé Microsoft.Jet.OLEDB.4.0'enregistré.
la source
Il n'y a en effet pas de version 64 bits de Jet - et aucun projet (apparemment) d'en produire une.
Vous pourrez peut-être utiliser le pilote ACE 64 bits: http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=23734
Cependant, vous pourrez peut-être passer le projet en 32 bits dans la version Express (je n'ai pas essayé et je n'ai plus installé 2008 dans aucune saveur)
Il est peut-être temps de supprimer complètement les bases de données Access, de mordre la balle et d'opter pour le serveur SQL à la place?
la source
J'utilise VS2013 pour Winforms, la solution ci-dessous a fonctionné pour moi.
Téléchargement: http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=23734
Définissez ensuite VS Target Platform sur x86.
la source
Dans les anciennes versions d'IIS, vous ne trouverez
Advance Settings
pas pour l'activer,Enable 32-bit Applications
vous devez exécuter les commandes suivantes:cscript% SYSTEMDRIVE% \ inetpub \ adminscripts \ adsutil.vbs SET W3SVC / AppPools / Enable32bitAppOnWin64 1
et
% SYSTEMROOT% \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_regiis.exe -i
Référence: ici
la source
J'obtenais la même exception lors de l'exécution de "SQL Server 2014 Importer et exporter des données (64 bits)" sur mon Windows 8.1.
Pour résoudre ce problème, j'ai effectué les opérations suivantes
a démarré SQL Server 2014 Importer et exporter des données (32 bits) au lieu de 64 bits et cela fonctionne pour moi. Je n'ai modifié aucun paramètre IIS et n'ai installé aucun logiciel supplémentaire.
la source
Je sais que j'ai ce problème encore et encore lorsque je déploie mon application sur un nouveau serveur car j'utilise ce pilote pour me connecter à un fichier Excel. Alors voici ce que je fais ces derniers temps.
Il y a un Windows Server 2008 R2, j'installe les pilotes Access pour une machine x64 bits et je me débarrasse de ce message, ce qui me rend très heureux de tomber sur un autre.
Celui-ci ci-dessous fonctionne à merveille sur ma machine de développement, mais sur le serveur me donne une erreur même après l'installation des derniers pilotes ODBC, ce qui, je pense, est le problème, mais c'est ainsi que je l'ai résolu.
Je remplace par le nouveau fournisseur comme celui-ci ci-dessous:
Mais en faisant cela, il y a une chose que vous devriez remarquer. L'utilisation de l'extension de fichier .xlsx et de la version Excel est 12.0.
Après avoir reçu ce message d' erreur Erreur: "Impossible de trouver l'ISAM installable" , je décide de modifier un peu les choses comme ci-dessous:
et oui, j'en ai fini avec cette chose désagréable, mais ici j'ai un autre message Le moteur de base de données Microsoft Access ne peut pas ouvrir ou écrire dans le fichier 'time_zone'. Il est déjà ouvert exclusivement par un autre utilisateur, ou vous avez besoin d'une autorisation pour afficher et écrire ses données. ce qui me dit que je ne suis pas loin de le résoudre.
Peut-être qu'il y a un autre processus qui a ouvert le fichier entre-temps et tout ce que j'ai à faire est un redémarrage et tout commencera en douceur comme prévu.
la source
allez dans Démarrer-> Exécuter et tapez cmd cela démarre l'invite de commande (également disponible à partir de Démarrer-> Programmes-> Accessoires-> Invite de commandes)
tapez cd .. et appuyez sur retour tapez cd .. et appuyez à nouveau sur retour (continuez à faire cela jusqu'à ce que l'invite affiche:>)
maintenant, vous devez aller dans un dossier spécial qui pourrait être c: \ windows \ system32 ou c: \ winnt \ system32 ou c: \ windows \ sysWOW64 essayez de taper chacun de ceux-ci, par exemple cd c: \ windows \ sysWOW64 (s'il indique Le système ne trouve pas le chemin spécifié, essayez le suivant) cd c: \ windows \ system32 cd c: \ winnt \ system32 lorsque l'un de ceux-ci ne provoque pas d'erreur, arrêtez, vous avez trouvé le dossier correct.
vous devez maintenant enregistrer les DLL OLE DB 4.0 en tapant ces commandes et en appuyant sur retour après chaque
regsvr32 Msjetoledb40.dll regsvr32 Msjet40.dll regsvr32 Mswstr10.dll regsvr32 Msjter40.dll regsvr32 Msjint40.dll
la source
Il n'y a pas de fournisseur 64 bits pour Jet. Si vous souhaitez prendre en charge plusieurs sources de base de données, y compris Jet vers Excel, vous aurez besoin d'au moins cette partie de votre application pour s'exécuter dans un processus 32 bits.
L'erreur que vous obtenez lorsque vous compilez pour x86 est un peu étrange. Je ne vois pas comment vous finiriez par référencer des assemblages 64 bits dans ce cas.
la source