|
 |
 |

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
%> |
|
 |
 |
|
|