[visual-studio] Le fournisseur Microsoft.ACE.OLEDB.12.0 n'est pas enregistré


Answers

Fondamentalement, si vous utilisez un ordinateur 64 bits, IIS 7 ne sert pas (par défaut) les applications 32 bits sur lesquelles le moteur de base de données fonctionne. Donc, voici exactement ce que vous faites:

1) Assurez-vous que le moteur de base de données 2007 est installé. Vous pouvez le télécharger à l' http://www.microsoft.com/downloads/details.aspx?FamilyID=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=en : http://www.microsoft.com/downloads/details.aspx?FamilyID=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=en

2) ouvrez le gestionnaire IIS7 et ouvrez la zone Pools d'applications. Dans la barre latérale droite, vous verrez une option indiquant "Définir les paramètres par défaut du pool d'applications". Cliquez dessus, et une fenêtre apparaîtra avec les options.

3) le second champ vers le bas, qui dit 'Activer les applications 32 bits' est probablement défini sur FAUX par défaut. Cliquez simplement là où il est dit «faux» pour le remplacer par «vrai».

4) Redémarrez votre pool d'applications (vous pouvez le faire en appuyant sur RECYCLE au lieu de STOP puis sur START, ce qui fonctionnera également).

5) terminé, et votre message d'erreur disparaîtra.

Question

J'ai une solution Visual Studio 2008 avec deux projets (un projet Word-Template et une application console VB.Net pour tester). Les deux projets font référence à un projet de base de données qui ouvre une connexion à un fichier de base de données MS-Access 2007 et contient des références à System.Data.OleDb. Dans le projet de base de données, j'ai une fonction qui récupère une table de données comme suit

 private class AdminDatabase
   ' stores the connection string which is set in the New() method
   dim strAdminConnection as string

   public sub New()
   ...
   adminName = dlgopen.FileName
   conAdminDB = New OleDbConnection
   conAdminDB.ConnectionString = "Data Source='" + adminName + "';" + _
       "Provider=Microsoft.ACE.OLEDB.12.0"

   ' store the connection string in strAdminConnection
   strAdminConnection = conAdminDB.ConnectionString.ToString()
   My.Settings.SetUserOverride("AdminConnectionString", strAdminConnection)
   ...
   End Sub

   ' retrieves data from the database
   Public Function getDataTable(ByVal sqlStatement As String) As DataTable
        Dim ds As New DataSet
        Dim dt As New DataTable
        Dim da As New OleDbDataAdapter
        Dim localCon As New OleDbConnection


        localCon.ConnectionString = strAdminConnection

        Using localCon
            Dim command As OleDbCommand = localCon.CreateCommand()
            command.CommandText = sqlStatement
            localCon.Open()
            da.SelectCommand = command
            da.Fill(dt)
            getDataTable = dt
        End Using

    End Function
End Class

Lorsque j'appelle cette fonction à partir de mon projet Modèle Word 2007, tout fonctionne correctement; pas d'erreurs Mais quand je l'exécute à partir de l'application console, il lève l'exception suivante

ex = {"Le fournisseur 'Microsoft.ACE.OLEDB.12.0' n'est pas enregistré sur la machine locale."}

Les deux projets ont la même référence et l'application de la console a fonctionné quand je l'ai écrite (il y a un certain temps) mais maintenant elle a cessé de fonctionner. Je dois manquer quelque chose mais je ne sais pas quoi. Des idées?




Solution:

C'est tout! Merci Arjun Paudel pour le lien. Voici la solution trouvée sur XNA Creator's Club Online. C'est par Stephen Styrchak.

L'erreur suivante me suggère de croire que vous compilez pour 64bit:

Le fournisseur 'Microsoft .ACE.OELDB.12.0' n'est pas enregistré sur la machine locale

Je n'ai pas d'édition express mais suivez-vous les étapes valables en 2008 express?

http://forums.xna.com/forums/t/4377.aspx#22601

http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/ed374d4f-5677-41cb-bfe0-198e68810805/?prof=required
- Arjun Paudel

Dans VC# Express , cette propriété est manquante, mais vous pouvez toujours créer une configuration x86 si vous savez où chercher.

Cela ressemble à une longue liste d'étapes, mais une fois que vous savez où ces choses sont, c'est beaucoup plus facile. Celui qui n'a que VC# Express trouvera probablement cela utile. Une fois que vous serez au courant de Configuration Manager , ce sera beaucoup plus intuitif la prochaine fois.

1. Dans VC # Express 2005, allez dans Tools -> Options .
2.Dans le coin inférieur gauche de la boîte de dialogue Options, cochez la case "Show all settings" .
3.Dans l'arborescence à gauche, sélectionnez "Projects and Solutions" .
4.Dans les options à droite, cochez la case "Show advanced build configuraions."
5.Cliquez sur OK .
6.Go to Build -> Configuration Manager ...
7.Dans la colonne Plate-forme à côté de votre projet, cliquez sur la liste déroulante et sélectionnez "<New...>" .
8.Dans le "New platform" setting, choose "x86" .
9.Cliquez sur OK .
10.Cliquez sur Close .
Là, maintenant vous avez une configuration x86! C'est de la tarte! :-)

Je recommande également d'utiliser Configuration Manager pour supprimer la plateforme Any CPU. Vous ne le voulez vraiment pas si vous avez des dérives sur des DLL natives 32 bits (même des dépendances indirectes).

Stephen Styrchak | XNA Game Studio Developer http://forums.xna.com/forums/p/4377/22601.aspx#22601




J'ai la même erreur sur un Windows Vista 64 bits entièrement mis à jour avec une application .NET que j'ai compilé en 32 bits seulement - le programme est installé dans le dossier programx86 sur les machines 64 bits. Il échoue avec ce message d'erreur même avec le fournisseur de base de données d'accès 2007 installé, avec / sans SP2 du même installé, IIS installé et pool d'applications pour la prise en charge de l'application 32bit ... oui j'ai essayé toutes les solutions partout et toujours pas de succès.

J'ai basculé mon application sur ACE OLE DB.12.0 parce que JET4.0 échouait sur des machines 64 bits - et ce n'est pas mieux: - / Le fil le plus prometteur que j'ai trouvé était celui-ci:

http://ellisweb.net/2010/01/connecting-to-excel-and-access-files-using-net-on-a-64-bit-server/

mais lorsque vous essayez d'installer la version bêta du pilote Office System 2010 64 bits: Composants de connectivité des données, il vous indique que vous ne pouvez pas installer la version 64 bits sans désinstaller toutes les applications 32 bits ... et installer la version 32 bits de 2010 Bêta du pilote Office System: les composants de connectivité des données ne résolvent pas le problème initial, même avec "Microsoft.ACE.OLEDB.12.0" comme fournisseur au lieu de "Microsoft.ACE.OLEDB.14.0" recommandé par cette page (et d'autres).

Ma prochaine tentative sera de suivre ce post:

Le problème est dû à la mauvaise version de OLEDB32.DLL et OLEDB32r.DLL enregistrés sur le serveur. Si les versions 64 bits sont enregistrées, elles doivent être désenregistrées, puis les versions 32 bits sont enregistrées à la place. Pour résoudre ce problème, désinscrivez les versions situées dans% Program Files% / Common Files / System / OLE DB. Enregistrez ensuite les versions au même emplacement, mais dans le répertoire% Program Files (x86)%.

Quelqu'un d'autre a-t-il eu autant de problèmes avec les fournisseurs JET4.0 et OLEDB ACE sur les machines 64 bits? Est-ce que quelqu'un a trouvé une solution si aucun des autres ne fonctionne?




J'ai le même problème. Je tente d'installer Office 2010 64 bits sur Windows 7 64 bits, puis installez 2007 Office System Driver: Data Connectivity Components.

Après cela, Visual Studio 2008 peut ouvrir une connexion à un fichier de base de données MS-Access 2007.




Related