Frage

Ich habe eine Visual Studio 2008-Lösung mit zwei Projekten (Word-Vorlage-Projekt und eine VB.Net Konsolenanwendung zum testen).Sowohl Projekte als Referenz-ein Datenbank-Projekt öffnet eine Verbindung zu einem MS-Access 2007-Datenbank-Datei und Verweise auf System.Daten.OleDb.In der Datenbank Projekt habe ich eine Funktion, die ruft eine Datentabelle wie folgt

 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

Wenn ich rufe diese Funktion von meinem Word 2007-Vorlage-Projekt funktioniert alles einwandfrei;keine Fehler.Aber wenn ich es aus der Konsole-Anwendung, die es wirft die folgende Ausnahme

ex = {"Der 'Microsoft.Ass.OLEDB.12.0' provider ist nicht registriert der lokalen Maschine."}

Beide Projekte haben die gleiche Referenz und die Konsole Anwendung hat funktioniert, wenn ich zuerst es geschrieben (vor einer Weile), aber jetzt hat es aufgehört zu arbeiten.Ich muss etwas vermissen, aber ich weiß nicht, was.Irgendwelche Ideen?

War es hilfreich?

Lösung

Ich habe ein Visual Basic-Programm mit Visual Studio 2008, die eine Access 2007-Datenbank verwendet und wurde mit dem gleichen Fehler zu erhalten. Ich fand einige Threads, die die erweiterte Kompilierung Konfiguration riet Wechsel in den Programmen gefundenen Objekten X86, wenn Sie ein 64-Bit-System laufen lassen. Bisher habe ich keine Probleme mit meinem Programm, da hatte.

Andere Tipps

Grundsätzlich, wenn Sie auf einer 64-Bit-Maschinen sind, IIS 7 nicht (standardmäßig) 32-Bit-Anwendungen dienen, die der Datenbank-Engine arbeitet auf. So, hier ist genau das, was Sie tun können:

1) sicherzustellen, dass der 2007-Datenbank-Engine installiert wird, kann dies unter folgenden Adresse heruntergeladen werden: http://www.microsoft.com /downloads/details.aspx?FamilyID=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=en

2) offen IIS7 Manager und öffnen Sie die Anwendungspools Bereich. Auf der rechten Seitenleiste finden Sie eine Option, die „Set-Anwendungspool defaults“ sagt. Klicken Sie darauf, und ein Fenster mit den Optionen eingeblendet.

3) nach unten das zweite Feld, das ‚Enable 32-Bit-Anwendungen‘, sagt wahrscheinlich standardmäßig auf FALSE gesetzt. Klicken Sie einfach auf, wo es heißt ‚falsch‘, es zu ändern auf ‚true‘.

4) Starten Sie Ihren app-Pool (Sie können dies tun, indem RECYCLE schlagen statt STOPP dann START, die auch funktionieren).

5) durchgeführt, und Ihre Fehlermeldung weggeht.

Sind Sie mit einem 64-Bit-System mit der Datenbank 32 Bit läuft, aber die Konsole mit 64 Bit? Es sind keine Treiber MS Access, die 64-Bit laufen und einen Fehler identisch mit dem Bericht würde Ihre berichtet.


Lösung:

Das ist es! Dank Arjun Paudel für den Link. Hier ist die Lösung als auf XNA Creator Club Online gefunden. Es ist von Stephen Styrchak.

Der folgende Fehler schlägt mich zu glauben, dass Sie für 64-Bit kompilieren:

  

Der ‚Microsoft .ACE.OELDB.12.0‘ Anbieter ist nicht auf dem lokalen Computer registriert

ich nicht Express Edition haben, sind aber folgende Schritte gültig im Jahr 2008 Express?

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

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


Ich dachte, ich würde erwähnen, denn ich fand diese Frage, wenn Sie vor einem etwas anderen Kontext das problem und dachte, es könnte helfen Sie anderen gequälten Seelen in die Zukunft:

Ich hatte eine ASP.NET app hosted on IIS 7.0 unter Windows Server 2008 64-bit.

Da IIS ist in die Steuerung des Prozesses Bitanzahl, die Lösung in meinem Fall war, die Enable32bitAppOnWin64-Einstellung auf 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

Es funktioniert etwas anders in IIS 6.0 (Sie können nicht Enable32bitAppOnWin64-an-Anwendung-pool-Ebene) http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/0aafb9a0-1b1c-4a39-ac9a-994adc902485.mspx?mfr=true

Ich habe gleiches Problem. Ich versuche Office 2010 64-Bit-Windows 7 64-Bit zu installieren und dann 2007 Office System installieren Driver:. Data Connectivity-Komponenten

nach, dass Visual Studio 2008 kann öffnet eine Verbindung zu einer MS-Access 2007 Datenbank-Datei.

Siehe meinen Beitrag auf einem ähnlichen Stapel Exchange-Thread https://stackoverflow.com/a/21455677/1368849

Ich hatte Version 15, nicht 12 installiert, die ich durch Ausführen dieses Powershell-Code herausgefunden ...

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

..., die mir dieses Ergebnis gab (ich andere Datenquellen aus Gründen der Kürze entfernt haben) ...

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

Ich habe den gleichen Fehler auf eine vollständig aktualisierten Windows Vista 64-Bit-Familie mit einer .NET-Anwendung, die ich auf 32-Bit nur kompiliert haben - das Programm im programx86 Ordner auf 64-Bit-Maschinen installiert ist. Es schlägt mit dieser Fehlermeldung auch bei 2007 Access-Datenbank-Provider installiert, mit / WIOTHOUT der SP2 von den gleichen installiert, IIS installiert und App-Pool für 32-Bit-app Unterstützung eingestellt ... ja, ich habe jede Lösung überall und immer noch keinen Erfolg versucht.

habe ich meine App ACE OLE DB.12.0 weil JET4.0 auf 64-Bit-Maschinen versagt - und es ist nicht besser: - / Der vielversprechendste Thread ich gefunden habe, war dies:

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

aber wenn Sie versuchen, die 64-Bit „2010 Office System Driver Beta: Data Connectivity-Komponenten“ zu installieren, es sagt Ihnen, dass Sie die 64-Bit-Version Anwendungen ohne Deinstallation alle 32-Bit-Office installieren kann ... und die Installation der 32-Bit Version von 2010 Office System Driver Beta: Datenkonnektivitätskomponenten lösen nicht das ursprüngliche Problem, auch mit „Microsoft.ACE.OLEDB.12.0“ als Anbieter anstelle von „Microsoft.ACE.OLEDB.14.0“, die die Seite (und andere) empfehlen.

Mein nächster Versuch wird seinen Beitrag folgen:

Das Problem ist, wegen des falschen Geschmack von OLEDB32.DLL und Oledb32r.dll auf dem Server registriert werden. Wenn die 64-Bit-Versionen registriert sind, müssen sie nicht registriert sein, und dann stattdessen die 32-Bit-Versionen registriert. Um dies zu beheben, Aufheben der Registrierung der lokalisierten Versionen in% Programfiles% / Gemeinsame Dateien / System / OLE DB. Dann registrieren Sie die Versionen auf dem gleichen Weg, aber im Verzeichnis% Program Files (x86)% Verzeichnis.

Hat jemand hatte so viel Mühe mit beiden JET4.0 und OLEDB ACE-Anbieter auf 64-Bit-Maschinen? Hat jemand eine Lösung, wenn keine der anderen zusammenarbeiten gefunden?

Ich gehe davon aus, dass, wenn Sie ein 64-Bit-System mit einer 32-Bit-Datenbank ausführen und versuchen, eine 64-Bit-Konsole ausgeführt werden, die folgenden Pakete müssen auf dem Rechner installiert werden.

  1. Installieren Sie die Microsoft Access-Datenbank-Engine 2010 x86 Verteilbare ist diese Installation finden Sie unter: http://www.microsoft.com/download/en/details.aspx ? id = 13255 .
  2. Data Connectivity-Komponenten von Office 2007, diese Installation verfügbar um: http://www.microsoft.com/download/en/confirmation.aspx ? id = 23734 .
  3. Microsoft Access-Datenbank-Engine 2010 x64 Redistributable. Du wirst muß das Paket lokal und führen Sie es mit einem passiven Flagge zum Download bereit. Sie können die Installation hier herunterladen: http://www.microsoft.com/en-us/download /details.aspx?id=13255 Installieren der Eingabeaufforderung mit dem ‚/ passiv‘ Flag verwendet. In dem Eingabeaufforderung den folgenden Befehl ein: 'AccessDatabaseEngine_x64.exe / passiv'

Hinweis: Die Reihenfolge der Materie scheint - so, wenn Sie etwas bereits installiert haben, deinstallieren und befolgen Sie die oben genannten Schritte

.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top