Wenn Sie Daten oder Objekte in einer Access-Datenbank oder Objekte in einem Access-Projekt löschen, wird die Access-Datenbank oder das Access-Projekt möglicherweise fragmentiert und nutzt den Speicherplatz weniger effizient. Beim Komprimieren einer Access-Datenbank oder eines Access-Projekts wird die Datei tatsächlich kopiert und die Art und Weise, wie die Datei auf der Festplatte gespeichert wird, neu organisiert. Durch die Komprimierung wird die Leistung sowohl von Access-Datenbanken als auch von Access-Projekten optimiert.
Als wir das ASP-Programm aufgrund der immer größer werdenden Datenbank als unerträglich langsam empfanden, dachten wir darüber nach, es zu komprimieren. Der herkömmliche Ansatz besteht jedoch darin, es lokal herunterzuladen und dann mit MSaccess den Komprimierungsvorgang abzuschließen und es dann hochzuladen!
Es ist zu beachten, dass dieses Programm tatsächlich über FSO-Berechtigungen mit der JET-Engine verbunden ist. Bevor Sie es verwenden, bestätigen Sie bitte, dass Ihr Server FSO-Berechtigungen (Dateisystemobjekt) unterstützt, und installieren Sie den neuesten ACCESS-Treiber! Bitte sichern Sie aus Sicherheitsgründen vor dem Komprimieren die Originaldatenbank! Laufende Umgebungen, die den Test bestanden haben:
WIN98SE+PWS, WIN2000+IIS5.0
Das Folgende ist der Quellcode, den ich kompiliert habe. Kopieren Sie ihn, speichern Sie ihn als „compact.asp“ und laden Sie ihn zur normalen Verwendung in das Verzeichnis hoch, in dem sich die Datenbank befindet.
<html>
<Kopf>
<title>ACCESS-Datenbankkomprimierungsprogramm</title>
</head>
<body bgcolor="e0f8ef">
<div>
<div align="center"><font color="#3300FF">
<b><font size="5">Universelles ACCESS-Datenbank-Online-Komprimierungsprogramm</font></b></font><br>
</div>
<div><br>
Dieses Programm ist tatsächlich über FSO-Berechtigungen mit der JET-Engine verbunden.
Bitte bestätigen Sie daher, dass Ihr Server FSO unterstützt, bevor Sie es verwenden.
(filesystemobject)-Berechtigungen und installieren Sie den neuesten ACCESS-Treiber!
Bitte sichern Sie aus Sicherheitsgründen vor dem Komprimieren die Originaldatenbank! </div><br>
<div align="center">Betriebsumgebung: WIN98SE+PWS, WIN2000+IIS5.0 <br>
<%
Const JET_3X = 4
Funktion CompactDB(dbPath, boolIs97)
Dimmen Sie fso, Engine, strDBPath
strDBPath = left(dbPath,instrrev(DBPath,""))
Setze fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(dbPath) Then
Set Engine = CreateObject("JRO.JetEngine")
If boolIs97 = "True" Then
Engine.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbpath, _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDBPath & "temp.mdb;"
& "Jet OLEDB:Engine Type=" & JET_3X
Anders
Engine.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbpath, _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDBPath & "temp.mdb"
Ende wenn
fso.CopyFile strDBPath & "temp.mdb",dbpath
fso.DeleteFile(strDBPath & "temp.mdb")
Setze fso = nichts
Set Engine = nichts
CompactDB = „Ihre Datenbank „ & dbpath & „ wurde komprimiert“ & vbCrLf
Anders
CompactDB = „Der von Ihnen eingegebene Datenbankpfad oder -name wurde nicht gefunden, bitte versuchen Sie es erneut“ & vbCrLf
End-If-
End-Funktion
%>
</div>
</div>
<form name="compact" method="post" action="compact.asp">
<div align="center">
<font size="2"><b><font color="#FF0000">
Komprimierungsoptionen, bitte sorgfältig ausfüllen! </font></b><br>
<br>
Geben Sie den vollständigen Namen der Datenbank ein:
<input type="text" name="dbpath">
(Enthält Erweiterungen wie MDB, ASA, ASP usw.)<br>
<br>
<input type="checkbox" name="boolIs97" value="True">
Überprüfen Sie, ob es sich um eine ACCESS97-Datenbank handelt<br>
(Standard ist die ACCESS2000-Datenbank)<br>
<br>
<input type="submit" name="submit" value="Komprimierung bestätigen">
</font></div>
</form>
<div align="center"><font size="2">
<%
Dimmen Sie dbpath,boolIs97
dbpath = request("dbpath")
boolIs97 = request("boolIs97")
Wenn dbpath <> "" Dann
dbpath = server.mappath(dbpath)
Response.write(CompactDB(dbpath,boolIs97))
Ende wenn
%>
<br>
</font></div></body></html>