Benutzer mit den meisten Antworten
Datenbankzugriff: System.Data.OleDb.OleDbException: Unspecified error?

Frage
-
Hallo NG,
dieser Fehler kommt, wenn ich irgenwelche daten aus der db hole. Wie ich bis jetzt herausgefunden habe liegt das Problem am zugriff auf die Temp-Datei im "Document settings\ServerName\ASPNET\Local settings\Temp".
Leider kann ich diesen Ordner nicht finden um die nötigen Sicherheitsrechte einzustellen. (Existiert dieser überhaupt?)
Ich habe mittlerweile mit sehr vielen Sicherheitseinstellungen der Temp-Ordner rumprobiert, aber es funktioniert auch nicht.
Wenn ich den IIS Neu starte, denke ich, dass es wieder funktionieren wird, aber das behebt das Problem nicht. Deshalb lasse ich die so. Ihr könnt auf www.comtel24.de nachschauen, was ich meine.
Wie könnte ich dieses Problem noch lösen? Oder was mache ich falsch?
DANKE LeuteLG Kaan
Antworten
-
Hallo Kaan,
The Microsoft Jet database engine cannot open the file 'C:\Database\database.mdb'. It is already opened exclusively by another user, or you need permission to view its data.
ist das denn der Fall? Kann es sein, dass die Datenbankdatei noch von irgend etwas anderem verwendet wird? Bspw. direkt in Access oder in einer anderen Anwendung geöffnet, ...? Falls ja, lass das, das geht in den allermeisten Fällen nicht.
Das könnte auch den anderen Fehler erklären.
Alternativ kann es auch sein, dass Du die Verbindung(en) offen lässt (also nach Verwendung kein .Close und .Dispose auf alles anwendest, was irgendwie mit der Connection, deren Commands, ... zu tun hat) und es daher zu viele offene Verbindungen gibt. Da kommt zwar eigentlich eine andere Meldung aber einen Versuch, da mal nachzuschauen, ist es sicherlich wert :)
Wenn Du die Datenbank sonst definitiv nirgends ansprichst, würd ich mal mit dem ProcessMonitor schauen, was genau da eigentlich nicht klappt.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort vorgeschlagen Stefan FalzModerator Montag, 29. November 2010 07:49
- Als Antwort markiert Robert BreitenhoferModerator Montag, 29. November 2010 07:55
Alle Antworten
-
Hallo Kaan,
dieser Fehler kommt, wenn ich irgenwelche daten aus der db hole. Wie ich bis jetzt herausgefunden habe liegt das Problem am zugriff auf die Temp-Datei im "Document settings\ServerName\ASPNET\Local settings\Temp".
und wie hast Du das rausbekommen? Im Normalfall sollte das eher, wenn überhaupt C:\Temp oder ähnliches sein.
Der Fehler kann vielfältige Ursachen haben. Poste doch bitte mal deinen Code zum Öffnen der DB und den ConnectionString.
Welches OS verwendest Du auf dem Webserver?
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Guten Morgen Stefan,
hier der Code:Dim conStr As String = ConfigurationManager.ConnectionStrings("default").ConnectionString
Dim objConn As New OleDbConnection(conStr)
objConn.Open()
------------------------
web.config:
<connectionStrings>
<add name="default" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Mode=ReadWrite;Data Source=|DataDirectory|\database.mdb;Persist Security Info=false" providerName="System.Data.OleDb"/>
</connectionStrings>
-------------------------
Wie ich es herausgefunden habe:-) Naja, bisschen gegoogelt, nach dem Fehlercode sollte es dass sein:
http://support.microsoft.com/kb/825738ich habe noch dies probiert:
web.config +:
<identity impersonate="false" />
OS ist windows 2003 server 64bit
LG
-
Hallo Kaan,
<add name="default" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Mode=ReadWrite;Data Source=|DataDirectory|\database.mdb;Persist Security Info=false" providerName="System.Data.OleDb"/>
probier mal bitte, die .mdb in einen anderen Ordner zu legen, bspw. X:\Irgendwas :)
Diesem Ordner gibst Du das Recht "Ändern" für NETZWERKDIENST bzw. NETWORK SERVICE bzw. dem Account, der den betreffenden Application Pool ausführt.
Den ConnectionString dann bitte entsprechend anpassen und |DataDirectory| mit dem Pfad ersetzen.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hab ich gemacht. Fehler:
The given path's format is not supported.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.NotSupportedException: The given path's format is not supported.
Source Error:
Line 7: 'Connectionstring wird aufgebaut und geöffnet Line 8: Dim conStr As String = ConfigurationManager.ConnectionStrings("default").ConnectionString Line 9: Dim objConn As New OleDbConnection(conStr) Line 10: objConn.Open() Line 11:
-
Him
Hab ich gemacht. Fehler:
The given path's format is not supported.da würde ich sagen, hast Du was falsch gemacht :) Poste doch mal bitte nochmal den ConnectionString, da steht ziemlich sicher was drin, was nicht stimmt.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
-
<connectionStrings><add name="default" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Mode=ReadWrite;Data Source=|DataDirectory|C:\Database\database.mdb;Persist Security Info=false" providerName="System.Data.OleDb"/></connectionStrings>
Ich sagte "ersetzen", nicht drin lassen :)
|DataDirectory|C:\Database\database.mdb;
sollte also
C:\Database\database.mdb;
lauten.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo Kaan,
The Microsoft Jet database engine cannot open the file 'C:\Database\database.mdb'. It is already opened exclusively by another user, or you need permission to view its data.
ist das denn der Fall? Kann es sein, dass die Datenbankdatei noch von irgend etwas anderem verwendet wird? Bspw. direkt in Access oder in einer anderen Anwendung geöffnet, ...? Falls ja, lass das, das geht in den allermeisten Fällen nicht.
Das könnte auch den anderen Fehler erklären.
Alternativ kann es auch sein, dass Du die Verbindung(en) offen lässt (also nach Verwendung kein .Close und .Dispose auf alles anwendest, was irgendwie mit der Connection, deren Commands, ... zu tun hat) und es daher zu viele offene Verbindungen gibt. Da kommt zwar eigentlich eine andere Meldung aber einen Versuch, da mal nachzuschauen, ist es sicherlich wert :)
Wenn Du die Datenbank sonst definitiv nirgends ansprichst, würd ich mal mit dem ProcessMonitor schauen, was genau da eigentlich nicht klappt.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort vorgeschlagen Stefan FalzModerator Montag, 29. November 2010 07:49
- Als Antwort markiert Robert BreitenhoferModerator Montag, 29. November 2010 07:55
-
Hi Stefan,
ich denke nicht, dass die Verbindung noch offen ist oder das ein anderer Prozess drauf zugreift, weill der Server ist neu aufgesetzt und die DB ist doch kopiert worden in den anderen Ordner. Jedenfalls habe ich dem Ordner "C:\Database" den User IWAM_plesk(default) hinzugefügt und diesem User Vollzugriff gestattet. jetzt funktioniert es, komischerweise. Letzte frage hoffe ich für Heute :-)
Hab ich dadurch Sicherheitsprobleme? -
Hallo Kaan,
Jedenfalls habe ich dem Ordner "C:\Database" den User IWAM_plesk(default) hinzugefügt und diesem User Vollzugriff gestattet. jetzt funktioniert es, komischerweise.
Vergib das Recht "Ändern", nicht "Vollzugriff". Sicherheitsprobleme hast Du damit eigentlich nicht mehr als wenn Du es mit einem eigenen Account wie bspw. NETZWERKDIENST machst. Falls auf diesem Server auch andere ihre Skripte einspielen können, sollte man aber schauen, dass jedes Web mit einem eigenen Account läuft.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo Kaan,
haben die Antworten dir geholfen, das Problem zu lösen? Falls ja, wäre es prima, wenn Du die Antworten auch als solche markieren und hilfreiche Postings bewerten könntest.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo Stefan,
bitte entschuldige, hatte in den letzten sehr wenig Zeit. Nein, das Problem besteht immer noch. Was der Fehler kommt zwar seltener vor, aber es ist immer noch vorhanden. Wenn du sonst noch eine Idee hast? Ich werde jetzt mal den gesamten Code durchgehen, ob ich doch irgendwo einen Connection.Close vergessen habe...
LG Kaan
-
Hallo Kaan,
Nein, das Problem besteht immer noch. Was der Fehler kommt zwar seltener vor, aber es ist immer noch vorhanden. Wenn du sonst noch eine Idee hast?
welche Fehlermeldung kommt denn nun? "already opened exclusively by another user..." oder "Unspecified error"?
Wenn Plesk immer noch so arbeitet wie früher, kann ich mir da einige mögliche Ursachen vorstellen. Bspw. Dateikopieraktionen, da Dateien, die per FTP hochgeladen werden, gar nicht direkt im Zielordner landen, sondern erst verzögert in den Zielordner kommen. Das könnte dann dazu führen, dass die Datei momentan im Zugriff ist.
Kannst Du testweise mal eine Website anlegen, die überhaupt nicht von Plesk angefasst wird (wenn das überhaupt geht, ansonsten Plesk mal komplett deinstallieren). Wenn das nicht geht, kannst Du die Website mal auf einem Server anlegen, auf dem kein Plesk installiert ist?
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo Stefan,
ich habe den Fehler gefunden. Es lag doch an einer offenen Connection, diese habe ich übersehen. Sorry für die Anstrengung, aber mir kam es komisch vor, weil wir die DB ausgelagert hatten, dann kam der Fehler seltener.
Trotzdem vielen vielen dank Stefan.LG Kaan