Si vous supprimez des données ou des objets dans une base de données Access, ou si vous supprimez des objets dans un projet Access, la base de données Access ou le projet Access risque de se fragmenter et d'utiliser l'espace disque de manière moins efficace. La compression d'une base de données Access ou d'un projet Access copie en fait le fichier et réorganise la façon dont le fichier est stocké sur le disque. La compression optimise les performances des bases de données Access et des projets Access.
Ainsi, lorsque nous avons trouvé le programme ASP insupportablement lent en raison de la base de données toujours croissante, nous avons pensé à le compresser. Mais l'approche conventionnelle consiste à le télécharger localement, puis à utiliser MSaccess pour terminer l'opération de compression, puis à le télécharger !
Il convient de noter que ce programme est en fait connecté au moteur JET via les autorisations FSO, donc avant de l'utiliser, veuillez confirmer que votre serveur prend en charge les autorisations FSO (objet du système de fichiers) et installez le dernier pilote ACCESS ! Pour des raisons de sécurité, veuillez sauvegarder la base de données originale avant de la compresser ! Environnements d'exécution qui ont réussi le test :
WIN98SE+PWS, WIN2000+IIS5.0
Voici le code source que j'ai compilé. Copiez-le et enregistrez-le sous compact.asp et téléchargez-le dans le répertoire où se trouve la base de données pour une utilisation normale.
<html>
<tête>
<title>Programme de compression de base de données ACCESS</title>
</tête>
<corps bgcolor="e0f8ef">
<div>
<div align="center"><font color="#3300FF">
<b><font size="5">Programme de compression en ligne de la base de données Universal ACCESS</font></b></font><br>
</div>
<div><br>
Ce programme est en fait connecté au moteur JET via les autorisations FSO.
Par conséquent, veuillez confirmer que votre serveur prend en charge FSO avant de l'utiliser.
(filesystemobject) et installez le dernier pilote ACCESS !
Pour des raisons de sécurité, veuillez sauvegarder la base de données originale avant de la compresser ! </div><br>
<div align="center">Environnement d'exploitation : WIN98SE+PWS, WIN2000+IIS5.0 <br>
<%
Const JET_3X = 4
Fonction CompactDB(dbPath, boolIs97)
Dim fso, moteur, strDBPath
strDBPath = gauche(dbPath,instrrev(DBPath,""))
Définir fso = CreateObject("Scripting.FileSystemObject")
Si fso.FileExists(dbPath) Alors
Set Engine = CreateObject("JRO.JetEngine")
Si boolIs97 = "True" Alors
Engine.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbpath, _
"Provider=Microsoft.Jet.OLEDB.4.0;Source de données=" & strDBPath & "temp.mdb;"
& "Jet OLEDB : Type de moteur=" & JET_3X
Autre
Engine.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbpath, _
"Provider=Microsoft.Jet.OLEDB.4.0;Source de données=" & strDBPath & "temp.mdb"
Fin si
fso.CopyFile strDBPath & "temp.mdb", dbpath
fso.DeleteFile(strDBPath & "temp.mdb")
Définir fso = rien
Définir le moteur = rien
CompactDB = "Votre base de données, " & dbpath & ", a été compressée" & vbCrLf
Autre
CompactDB = "Le chemin ou le nom de la base de données que vous avez entré n'a pas été trouvé, veuillez réessayer" & vbCrLf
Fin si
fin de la fonction
%>
</div>
</div>
<form name="compact" method="post" action="compact.asp">
<div align="centre">
<font size="2"><b><font color="#FF0000">
Options de compression, veuillez remplir soigneusement ! </font></b><br>
<br>
Saisissez le nom complet de la base de données :
<input type="text" name="dbpath">
(Inclut des extensions telles que MDB, ASA, ASP, etc.)<br>
<br>
<input type="checkbox" name="boolIs97" value="True">
Vérifiez s'il s'agit d'une base de données ACCESS97<br>
(La base de données par défaut est ACCESS2000)<br>
<br>
<input type="submit" name="submit" value="Confirmer la compression">
</font></div>
</form>
<div align="center"><font size="2">
<%
Dim chemin de base de données, boolIs97
chemin de base de données = requête("chemin de base de données")
boolIs97 = request("boolIs97")
Si dbpath <> "" Alors
dbpath = serveur.mappath(dbpath)
réponse.write(CompactDB(dbpath,boolIs97))
Fin si
%>
<br>
</font></div></body></html>