Zugriff von .NET-Anwendungen auf Jet unter 64-bit-Windows-Betriebssystemen

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.

„Wer nichts zu verbergen hat, hat auch nichts zu befürchten“

Lesen und verinnerlichen:

„Wer nichts zu verbergen hat, hat auch nichts zu befürchten“

XiongShui kommentiert diesen Telepolis-Artikel treffend wie folgt:

Wer auf diesen Satz hin nicht sofort demjenigen, der ihn ausspricht, eine schallende Ohrfeige verpasst, hat auch nichts besseres verdient.

Nur leider ist es so, daß 90% der Menschen der Meinung sind, dieser Satz habe eine Berechtigung im Zusammenhang mit der Aushöhlung ihrer Rechte. Man sollte diesen Menschen Max Frischs „Biedermann und die Brandstifter“ um die Ohren hauen, damit sie endlich aufwachen. Zu der Zeit als dieses Buch geschrieben wurde, stand auch schon mal so eine Aushöhlung der Grundrechte an. Damals ging unisono ein Schrei durch die ganze Presse. Heute? Hört man mal ein leises Murmeln.

Unsere Demokratie scheint schon reichlich in die Jahre gekommen, sonst würden wir sie mehr schätzen…

Seid sensibilisiert! Nicht dass ich sofort was dagegen machen könnte, aber ich bin wachsam und irgendwann wird sich mal die Gelegenheit bieten. Ganz sicher.

Windows-Tipp: Ersetzen von Dateien mit „Nein, alle“ bestÄtigen, beim Kopieren von Dateien im Windows-Explorer

Wenn Ihr mehrere Dateien/Ordner mit dem Windows-Explorer kopieren wolle und eine Datei/ein Ordner bereits vorhanden ist, kommt folgende Meldung:

Was mir da immer gefehlt hat war eine „Nein, alle„-Schaltfläche, die alle Dateien überspringt die schon vorhanden sind und nicht mehr nachfragt.

Und tatsächlich, es ist ein Mechanismus eingebaut der das ermöglicht:

Wenn Ihr die Umschalttaste gedrückt haltet während Ihr mit der Maus auf die „Nein“-Schaltfläche klickt, dann entspricht das einem „Nein, alle“.

Ein paar XSLT-Snippets

Hauptsächlich für mich selbst, nachfolgend eine wachsende Sammlung von XSLT-Code-Snippets:

1.) Ein XML-Dokument 1:1 an die Ausgabe weiterreichen:

<?xml version="1.0" encoding="UTF-8" ?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output
        method="xml"
        indent="yes" />
    
    <xsl:template match="*">
        <xsl:element name="{name()}">
    
            <!-- all attributes. -->
            <xsl:for-each select="@*">
                <xsl:attribute name="{name()}">
                    <xsl:value-of select="current()" />
                </xsl:attribute>
            </xsl:for-each>

            <!-- recurse. -->
            <xsl:apply-templates />
        </xsl:element>
    </xsl:template>
</xsl:stylesheet>

2.) Eine verschachtelte Struktur in eine flache Struktur umwandeln

Antwort auf meine Frage in einer Newsgroup dazu.

Die Sammlung wird wachsen.

Chondromatose, anyone?

(Hinweis zu Beginn: diesen Artikel schreibe ich primär um „Gleichgesinnte“ zu finden, Erfahrungen auszutauschen und neue Erkenntnisse zu gewinnen. In Deutsch heißt die Erkrankung „Synoviale Chondromatose„, in Englisch „Synovial chondromatosis„)

(Translate this page to english)

Inhaltsverzeichnis

Nach oben

Meine „Geschichte“, 1999-2003

Es fing so 1999 an (ich war damals 26): Meine rechte Schulter tat weh, beim Bewegen oder drauflegen oder Ähnlichem. Ich bin daraufhin zum Arzt gegangen, er hat Röntgenbilder gemacht, was von „Entzündung“ gesprochen, mir ein Mittel gegen Entzündung gegeben, das war’s dann.

Weiterlesen

Kleines Caspol-Tool

Ggf. könnt Ihr dieses kleine Tool von uns mal gebrauchen:

zetacaspol.exe, 150 kB

zetacaspol.exe

Das Tool dient dem automatischen anpassen von .NET-Sicherheitsrichtlinen indem es das caspol.exe-Hilfsprogramm von Microsoft aufruft.

Szenario/Hintergrund:

.NET-Windows-Forms-Anwendungen die auf einem Netzlaufwerk liegen erhalten standardmäßig weniger Rechte zum Ausführen.

Mit Hilfe von zetacaspol.exe könnt Ihr auf einfache Weise dafür sorgen, dass eine Anwendung „FullTrust“-Rechte erhält:

  1. zetacaspol.exe in den Netzwerk-Ordner kopieren in dem die zu berechtigende Anwendung liegt (z.B. „\\myserver\someshare\myapplication\bin“)
  2. Diesen Ordner in „Lokales Intranet“-Zone oder „Vertrauenswürdige Sites“-Zone hinzufügen
  3. zetacaspol.exe einmal aufrufen

zetacaspol.exe hat selbst keine Benutzeroberfläche und schreibt schlicht eine „zetacaspol.log“-Datei mit den ausgeführten Befehlen.

Es arbeitet mit den 32-bit- und 64-bit-Versionen des .NET Framework von Version 1.1. bis zur bis dato neuesten Version 3.5 zusammen.

Vorsicht bei „Debug.Assert“-Aufrufen in ASP.NET (2.0)-Webanwendungen!

Über vier Manntage hat mich insgesamt das folgende (in meinen Augen falsche) Verhalten von ASP.NET gekostet.

Beschreibung

  • Eine ASP.NET 2.0-Webanwendung läuft in der Testumgebung ganz normal und auch im Echtbetrieb.
  • Zu nicht-vorhersehbaren Zeiten „hängt“ die Anwendung auf einmal. D.h. die Anwendung reagiert für den Benutzer einfach nicht und der Browser lädt ewig.
  • Wenn ich dann den entsprechenden „w3wp.exe“ kille (ich habe extra einen AppPool nur für die eine Webanwendung gemacht), dann wird sofort automatisch ein neuer w3wp.exe gestartet und die Anwendung läuft wieder normal.

Ursache

Ein Aufruf von Debug.Assert in einer von der Webanwendung verwendeten DLL hat den Prozess zum Hängen gebracht.

  • Debug.Assert direkt in einer
    Webanwendung ausgeführt hält den „w3wp.exe“ nicht an, sondern wird
    schlicht ignoriert.
  • Debug.Assert indirekt
    in einer DLL, die von der Webanwendung verwendet wird, hält den
    w3wp.exe an und kann nur durch killen des „w3wp.exe“ beendet werden.

Lösung

Als schnellen Workaround habe ich jetzt alle Debug.Assert-Aufrufe in der DLL auskommentiert. Natürlich könnt Ihr auch schlicht alles im Release-Modus kompilieren, das ist aber in meinem Fall nicht nötig gewesen (keine Performance-Verbesserungen).

Klettern im Frankenjura

Am Wochenende waren Chris, Gerd und Uwe auf den Spuren Wolfgang Güllichs klettern im Frankenjura.


Klettern im Frankenjura (Uwe in einer VII-) – Klick für Bildergalerie

In der Bildergalerie könnt Ihr einige Bilder davon anschauen.

Hat uns glaube ich allen sehr gut gefallen! Guter Fels, so wie auf der Schwäbischen Alb und relativ schnell per Auto erreichbar.

Hier gibt’s ein Video des Gasthof-Zimmers in dem ich übernachtet habe. 27 Euro die Nacht inklusive Frühstück :-).