Si elimina datos u objetos en una base de datos de Access, o elimina objetos en un proyecto de Access, la base de datos de Access o el proyecto de Access pueden fragmentarse y utilizar el espacio en disco de manera menos eficiente. Al comprimir una base de datos de Access o un proyecto de Access, en realidad se copia el archivo y se reorganiza la forma en que se almacena en el disco. La compresión optimiza el rendimiento tanto de las bases de datos de Access como de los proyectos de Access.
Entonces, cuando encontramos que el programa ASP era insoportablemente lento debido a la base de datos en constante crecimiento, pensamos en comprimirlo. Pero el enfoque convencional es descargarlo localmente y luego usar MSaccess para completar la operación de compresión y luego cargarlo.
Cabe señalar que este programa en realidad está conectado al motor JET a través de permisos FSO, por lo que antes de usarlo, confirme que su servidor admita permisos FSO (objeto de sistema de archivos) e instale el controlador ACCESS más reciente. Por razones de seguridad, haga una copia de seguridad de la base de datos original antes de comprimirla. Entornos en ejecución que han pasado la prueba:
WIN98SE+PWS, WIN2000+IIS5.0
El siguiente es el código fuente que compilé, cópielo y guárdelo como compact.asp y cárguelo en el directorio donde se encuentra la base de datos para uso normal.
<html>
<cabeza>
<title>Programa de compresión de bases de datos ACCESS</title>
</cabeza>
<cuerpo bgcolor="e0f8ef">
<div>
<div align="centro"><font color="#3300FF">
<b><font size="5">Programa de compresión en línea de bases de datos Universal ACCESS</font></b></font><br>
</div>
<div><br>
En realidad, este programa está conectado al motor JET a través de permisos FSO.
Por lo tanto, confirme que su servidor admita FSO antes de usarlo.
(objeto del sistema de archivos) e instale el controlador ACCESS más reciente.
Por razones de seguridad, haga una copia de seguridad de la base de datos original antes de comprimirla. </div><br>
<div align="center">Entorno operativo: WIN98SE+PWS, WIN2000+IIS5.0 <br>
<%
Constante JET_3X = 4
Función CompactDB(dbPath, boolIs97)
Dim fso, motor, strDBPath
strDBPath = izquierda(dbPath,instrrev(DBPath,""))
Establecer fso = CreateObject("Scripting.FileSystemObject")
Si fso.FileExists(dbPath) Entonces
Establecer motor = CreateObject("JRO.JetEngine")
Si boolIs97 = "True" Entonces
Engine.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbpath, _
"Proveedor=Microsoft.Jet.OLEDB.4.0;Fuente de datos=" & strDBPath & "temp.mdb;" _
& "Jet OLEDB: Tipo de motor=" & JET_3X
Demás
Engine.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbpath, _
"Proveedor=Microsoft.Jet.OLEDB.4.0;Fuente de datos=" & strDBPath & "temp.mdb"
Terminar si
fso.CopyFile strDBPath & "temp.mdb",dbpath
fso.DeleteFile(strDBPath y "temp.mdb")
Establecer fso = nada
Establecer motor = nada
CompactDB = "Su base de datos, " & dbpath & ", ha sido comprimida" & vbCrLf
Demás
CompactDB = "No se encontró la ruta de la base de datos o el nombre que ingresó, inténtelo nuevamente" & vbCrLf
Finalizar si
finaliza la función
%>
</div>
</div>
<formulario nombre="compact" método="post" acción="compact.asp">
<div align="centro">
<font size="2"><b><font color="#FF0000">
Opciones de compresión, ¡complételas con cuidado! </font></b><br>
<br>
Ingrese el nombre completo de la base de datos:
<tipo de entrada="texto" nombre="rutadb">
(Incluye extensiones como MDB, ASA, ASP, etc.)<br>
<br>
<tipo de entrada="casilla de verificación" nombre="boolIs97" valor="True">
Comprueba si es una base de datos ACCESS97<br>
(El valor predeterminado es la base de datos ACCESS2000)<br>
<br>
<tipo de entrada="enviar" nombre="enviar" valor="Confirmar compresión">
</font></div>
</formulario>
<div align="centro"><font size="2">
<%
ruta de base de datos tenue, boolIs97
rutadb = solicitud("rutadb")
boolIs97 = solicitud("boolIs97")
Si dbpath <> "" Entonces
rutabd = servidor.mappath(rutabd)
respuesta.write(CompactDB(dbpath,boolIs97))
Terminar si
%>
<br>
</font></div></body></html>