Kategorie: Datenbankzugriffe
Frage: Warum bekomme ich manchmal einen Fehler beim öffnen meiner Access-Datenbank?
Vorweg noch ein Hinweis: Sie werden in diesem Artikel keine richtige Erklärung finden,
warum dieser Fehler auftritt, da dies noch nicht 100%ig geklärt ist, aber Sie werden
Beispiele finden, wie dieser Fehler in 95% aller Fälle verhindert werden kann.

Unter gewissen Umständen wird beim Öffnen einer Access-Datenbank sporadisch ein
Fehler zurückgegeben. Es lässt sich nicht erkennen, durch was dieser Fehler verursacht
wird. Bei einer Überprüfung der Datenbank und der Umgebungsbedingungen (Datei-
und Verzeichnisrechte, ...) scheint alles in Ordnung zu sein.

Die Fehlermeldung, die beim Öffnen der Datenbank zurückgegeben wird, lautet in etwa:

--------------------------------------
Provider-Fehler '80004005'

Unbekannter Fehler

/verzeichnis/skript.asp  Zeile xxx
--------------------------------------

oder

-------------------------------------
Provider error '80004005'

Unspecified error

/verzeichnis/skript.asp  Line xxx
-------------------------------------

In den meisten Fällen wird die entsprechende Datenbank in etwa so geöffnet:
<% objConn.Open "<DSN>" %> oder <% objConn.Open "<DSN>", "", "" %>
Es wird also kein Username übergeben. Durch die Angabe eines Usernamens
beim Öffnen der Verbindung kann dieser Fehler aber fast immer vermieden
werden.

Das erste Beispiel benutzt eine System-DSN zum Öffnen der Datenbank. Sollten
Sie eine Datei-DSN oder DSN-lose Verbindungen benutzen, sehen Sie bitte im
2. Beispiel nach.

1. Beispiel

[beispiel1fehler.asp]
<%
Set objConn = Server.CreateObject("ADODB.Connection")
    ' --- In der folgenden Zeile tritt der Fehler auf
    objConn.Open "<DSN>", "", ""

    ...

    objConn.Close
Set objConn = Nothing
%>

[beispiel1korrekt.asp]
<%
Set objConn = Server.CreateObject("ADODB.Connection")
    ' --- In der folgenden Zeile wurde als Username "admin" übergeben,
    ' --- daher wird Access angewiesen, diesen Usernamen intern zu benutzen
    ' --- und der Fehler tritt nicht mehr auf.
    objConn.Open "<DSN>", "admin", ""

    ...

    objConn.Close
Set objConn = Nothing
%>


2. Beispiel

[beispiel2fehler.asp]
<%
Set objConn = Server.CreateObject("ADODB.Connection")
    ' --- Zuweisen der Dateipfade
    DSNFile = Server.MapPath("./") & "\datenbanken\db_conn.dsn"
    DBFile = Server.MapPath("./") & "\datenbanken\datenbank.mdb"

    ' --- In der folgenden Zeile tritt der Fehler auf
    objConn.Open "filedsn=" & DSNFile & ";DBQ=" & DBFile & ";"

    ...

    objConn.Close
Set objConn = Nothing
%>

[beispiel2korrekt.asp]
<%
Set objConn = Server.CreateObject("ADODB.Connection")
    ' --- Zuweisen der Dateipfade
    DSNFile = Server.MapPath("./") & "\datenbanken\db_conn.dsn"
    DBFile = Server.MapPath("./") & "\datenbanken\datenbank.mdb"

    ' --- In der folgenden Zeile wurde als Username "admin" übergeben,
    ' --- daher wird Access angewiesen, diesen Usernamen intern zu benutzen
    ' --- und der Fehler tritt nicht mehr auf.
    objConn.Open "filedsn=" & DSNFile & ";DBQ=" & DBFile & ";UID=admin;PWD=;"

    ...

    objConn.Close
Set objConn = Nothing
%>
Copyright 2000 - 2024 by Stefan Falz Webconsulting