Wie Kann ich das Entfernen von Access-Db ' s temporäre ldb-Datei
Habe ich eine ASP.NET Projekt. Ich bin die Verbindung zu den DB-und dann schließen und die Entsorgung des connection-Objekts. Aber wenn jemand betritt meine Website, MS Access erstellt eine temporäre dbname.ldb. Wenn ich herunterladen will meine ursprüngliche mdb-Datei von meinem server, es wird nicht lassen Sie mich den Zugriff auf die mdb-Datei. Ich kann nicht alles tun, wenn es die ldb-Datei im server. Es ist schließ-mdb-Datei, und ich kann mich nicht bewegen. Was ist also das problem? Ich öffne die Verbindung und schließen Sie es. Warum also diese ldb-Datei nicht selbst löschen, nachdem die Verbindung geschlossen ist.
InformationsquelleAutor Ibrahim AKGUN | 2009-06-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dem Zusammenhang kann offen gelassen werden, wenn die Skripts erzeugt einen Fehler jeglicher Art, vor, um es zu schließen. Überprüfen Sie die Skripts mit einem individuellen Fehler 500-Seite, die logs in eine text-Datei, die die Fehler und Sie werden sehen, wenn dies der Fall ist. Irgendwie ist die ldb-Datei nicht gefährlich ist, so können Sie ein Skript erstellen, um Sie zu entfernen, einmal am Tag oder so. Dies ist einer der Nachteile über die Arbeit von web-Anwendungen mit MS-Access. Versuchen zu migrieren MSSQL, ob Sie oder auf MySQL, das Letzte kann verwendet werden, aus .NET oder das klassische ASP-kein problem mit ADO oder ADO.NET mit den passenden Treiber.
Der Zugang ist nicht buggy. Wenn die Menschen es unpassend (wie ich glaube, mit es für nichts, aber die meisten trivial-website), sollten Sie nicht überrascht sein, wenn die Dinge schlecht. Aber das ist nicht, weil der Zugriff buggy ist, sondern weil es missbraucht wird.
InformationsquelleAutor backslash17
Ihre Webanwendung innerhalb des IIS ist, halten die Verbindung mit connection-pooling. Die IIS-Anwendung wird schließlich in der Nähe, wenn es gibt keine weiteren verbindungen innerhalb des IIS festgelegt ist, kündigen Sie Ihre web-Anwendung, oder Sie können starten Sie die Anwendung neu (und kopieren Sie die Datei, bevor jemand bekommt).
Das ist nur ein Grund, der Zugang ist nicht eine gute Wahl der Datenbank für diese Art von Anwendung.
InformationsquelleAutor Cade Roux
Den
.ldb
Datei ist die lock-Datei für.mdb
Access-Datenbanken. Jedes mal, wenn Sie öffnen Sie eine Datenbank, die Jet-engine erstellen, die die lock-Datei und halten Sie es offen, solange jemand verbunden ist.Einmal gibt es keine anderen clients mit der Datenbank verbunden, Jet entfernt die lock-Datei.
Also Sie sehen, die lock-Datei aus einem von zwei Gründen:
Wenn die überprüfung der error-logs von deinem server nicht geben Ihnen nichts, versuchen Sie, melden Sie alle Datenbank-Zugriffe von innerhalb Ihrer Anwendung auf eine Datei: Anhängen Informationen über die Uhrzeit, Verbindung und andere nützliche debug-Informationen.
Das könnte ein einfacher Weg, um schnell zu Debuggen, das problem und sehen, wo und wenn die Verbindung offen ist.
Alternativ, Sie können einen Blick auf diesen CodeProject-Artikel: Finden Sie "Durchgesickert" Datenbank-Verbindungen in ASP.NET Web-Anwendungen.
InformationsquelleAutor Renaud Bompuis
Eventuell möchten Sie auch zu prüfen, connection pooling - beim schließen einer Verbindung, c# tatsächlich hält Sie offen, für eine Weile (30 Sek.? 60 Sek.?) vor wirklich schließen, im Falle dass es wieder verwendet werden kann. Dies kann ein Problem sein.
InformationsquelleAutor Chris
Einen hacky workaround, um die zu entfernen .ldb-Datei ist Folgendes zu tun:
InformationsquelleAutor Spike
Müssen Sie Rufen Sie GC.Collect() nach Nähe und Entsorgen Sie das Connection-Objekt 🙂
GC.Collect()
wird nicht lassen Sie alle Datenbank-locks. Ein expliziter Aufruf vonDispose()
(einschließlichusing
Blöcke) ist alles was Sie brauchen - AufrufeClose()
sind völlig überflüssig, daClose
undDispose
tun genau dasselbe.InformationsquelleAutor Gustavo Chacón Bustos