67 votes

Microsoft.ACE.OLEDB.12.0 fournisseur n'est pas enregistré

J'ai une solution Visual Studio 2008 avec deux projets (un Mot-projet de Modèle et un VB.Net l'application de la console de contrôle). Les deux projets de référence d'un projet de base de données qui ouvre une connexion à un MS-Access 2007 fichier de base de données et des références à Système.Les données.OleDb. Dans le projet de base de données, j'ai une fonction qui récupère un tableau 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 Modèle Word 2007 projet tout fonctionne bien; pas d'erreurs. Mais quand je le lance à partir de la console de l'application, il jette l'exception suivante

ex = {""Microsoft.ACE.OLEDB.12.0' le fournisseur n'est pas inscrit sur la machine locale."}

Les deux projets ont la même référence et l'application de console a fait un travail quand j'ai commencé à l'écrire (il y a un moment), mais maintenant, il a arrêté de travailler. Quelque chose doit m'échapper, mais je ne sais pas quoi. Des idées?

53voto

Matt Points 481

En gros, si vous êtes sur une machine 64 bits, IIS 7 ne l'est pas (par défaut) au service des applications 32 bits, le moteur de base de données fonctionne. Voici donc exactement ce que vous faites:

1) s'assurer que l'2007 moteur de base de données est installé, il peut être téléchargé à: http://www.microsoft.com/downloads/details.aspx?FamilyID=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=en

2) ouvrir IIS7 manager, et ouvrez l'Application des Piscines de la région. Sur la barre de droite, vous verrez une option qui dit "Jeu de pool d'applications par défaut". Cliquez dessus et une fenêtre s'affiche avec les options.

3) le deuxième champ en bas, qui dit "Activer les applications 32 bits" est probablement la valeur FALSE par défaut. Simplement cliquez où il est dit "faux" pour changer en "vrai".

4) Redémarrez l'application de la piscine (vous pouvez le faire en appuyant sur le RECYCLER au lieu de l'ARRÊTER puis DÉMARRER, qui fonctionne également).

5) faire, et votre message d'erreur va s'en aller.

7voto

Joel Lucsy Points 5345

Vous êtes sous un système 64 bits avec la base de données fonctionnant en 32 bits, mais la console en cours d'exécution 64 bits? Il n'y a pas de MS Access pilotes qui exécutent 64 bits et ferait rapport une erreur identique à celui déclaré.

5voto

Pescadore Points 51

3voto

Veli Points 1187

Je pensais carillon parce que je trouve cette question face à un contexte légèrement différent du problème et de la pensée qu'il pourrait aider d'autres âmes tourmentées dans le futur:

J'ai eu un ASP.NET application hébergée sur IIS 7.0 sur Windows Server 2008 64-bit.

Depuis IIS est en contrôle de la procédure du nombre de bits, la solution dans mon cas était de définir la Enable32bitAppOnWin64 paramètre à true: http://blogs.msdn.com/vijaysk/archive/2009/03/06/iis-7-tip-2-you-can-now-run-32-bit-and-64-bit-applications-on-the-same-server.aspx

Il fonctionne légèrement différemment dans IIS 6.0 (Vous ne pouvez pas définir Enable32bitAppOnWin64 à l'application-niveau piscine) http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/0aafb9a0-1b1c-4a39-ac9a-994adc902485.mspx?mfr=true

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