Verhalten
Beim Ausführen von .NET-Anwendungen die via OleDB auf Microsoft-Access-Datenbanken (.mdb) zugreifen, kommt unter 64-Bit-Betriebssystemen folgende Fehlermeldung:
The ‚Microsoft.Jet.OLEDB.4.0‘ provider is not registered on the local machine.
Ursache
Der Microsoft-Jet-Treiber für den Zugriff auf Microsoft-Access-Datenbanken existiert nur in einer 32-Bit-Version, auch auf 64-Bit-Betriebssystemen.
Es gibt keine 64-Bit-Version und scheinbar ist auch keine geplant.
Lösungen
In diesem Forum-Thread habe ich sowohl die Lösung für Windows-Anwendungen, als auch für ASP.NET-Webanwendungen gefunden. Dort für Visual Basic beschrieben, aber auch für C# anwendbar.
Windows-Anwendungen (Konsole und Windows Forms)
Für Windows-Anwendungen im Visual Studio den CPU-Typ der Projektkonfiguration der betroffenen Projekte so einstellen, dass „x86“ als Zielsystem eingestellt ist, so wie in diesem Posting erklärt und hier detailliert beschrieben.
Zitat:
There is not a 64 bit version of jet that is why you get that error. To force your app to use the 32 bit change the target cpu to x86 in the advanced compiler options.
Dazu Rechtsklick auf das Projekt im Solution Explorer, dann dort Properties auswählen und dort Registerkarte Build, Auswahlliste Platform Target. Dort dann „x86“ auswählen, zuvor stand dort vermutlich „Any CPU“ drin.
In meinen Tests hat es ausgereicht, wenn ich bei einem Projekt, das über mehrere DLLs verteilt war, die Hauptanwendung (also das Projekt der EXE-Datei) als „x86“ gekennzeichnet habe und die DLLs auf „Any CPU“ gelassen habe.
ASP.NET-Webanwendungen
Für Webanwendungen muss der IIS, also der Webserver vom 64-Bit-Modus in den 32-Bit-Modus umgeschaltet werden. Dies gilt dann für alle Websites. In diesem Posting wird das erwähnt, in diesem Microsoft-Knowledge-Base-Artikel wird es beschrieben.
Zitat aus dem Posting:
If you want to run your ASP.NET app in 32-bit mode then you have run IIS in 32-bit mode. In addition, you cannot run IIS in 32 and 64-bit mode at the same time.
Zusammenfassung
Alles in allem ist Microsoft Jet also ausschließlich in 32-Bit verfügbar. Das ist recht traurig; der Grund ist sicherlich darin zu sehen, die Entwickler weg vom „alten“ Microsoft Access/Jet, hin zum SQL Server 2005 (Express) zu bewegen.
Ich find’s doof und lästig.