Se você excluir dados ou objetos em um banco de dados do Access ou excluir objetos em um projeto do Access, o banco de dados do Access ou o projeto do Access poderá ficar fragmentado e usar o espaço em disco de forma menos eficiente. A compactação de um banco de dados ou projeto do Access, na verdade, copia o arquivo e reorganiza a forma como o arquivo é armazenado no disco. A compactação otimiza o desempenho dos bancos de dados do Access e dos projetos do Access.
Então, quando achamos o programa ASP insuportavelmente lento devido ao banco de dados cada vez maior, pensamos em compactá-lo. Mas a abordagem convencional é baixá-lo localmente e, em seguida, usar o MSaccess para concluir a operação de compactação e, em seguida, carregá-lo!
Deve-se observar que este programa está realmente conectado ao mecanismo JET por meio de permissões FSO, portanto, antes de usá-lo, confirme se seu servidor suporta permissões FSO (objeto de sistema de arquivos) e instale o driver ACCESS mais recente! Por razões de segurança, faça backup do banco de dados original antes de compactar! Ambientes em execução que passaram no teste:
WIN98SE+PWS, WIN2000+IIS5.0
A seguir está o código-fonte que compilei e salve-o como compact.asp e carregue-o no diretório onde o banco de dados está localizado para uso normal.
<html>
<cabeça>
<title>Programa de compactação de banco de dados ACCESS</title>
</head>
<corpo bgcolor="e0f8ef">
<div>
<div align="center"><font color="#3300FF">
<b><font size="5">Programa de compactação on-line de banco de dados Universal ACCESS</font></b></font><br>
</div>
<div><br>
Na verdade, este programa está conectado ao mecanismo JET por meio de permissões FSO.
Portanto, confirme se o seu servidor suporta FSO antes de usá-lo.
(filesystemobject) e instale o driver ACCESS mais recente!
Por razões de segurança, faça backup do banco de dados original antes de compactar! </div><br>
<div align="center">Ambiente operacional: WIN98SE+PWS, WIN2000+IIS5.0 <br>
<%
Const JET_3X = 4
Função CompactDB(dbPath, boolIs97)
Dim fso, mecanismo, strDBPath
strDBPath = left(dbPath,instrrev(DBPath,""))
Definir fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(dbPath) Then
Definir Engine = CreateObject("JRO.JetEngine")
Se boolIs97 = "True" Então
Engine.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Fonte de dados=" & dbpath, _
"Provider=Microsoft.Jet.OLEDB.4.0;Fonte de dados=" & strDBPath & "temp.mdb;"
& "Jet OLEDB: Tipo de motor =" & JET_3X
Outro
Engine.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Fonte de dados=" & dbpath, _
"Provider=Microsoft.Jet.OLEDB.4.0;Fonte de dados=" & strDBPath & "temp.mdb"
Terminar se
fso.CopyFile strDBPath & "temp.mdb",dbpath
fso.DeleteFile(strDBPath & "temp.mdb")
Defina fso = nada
Definir mecanismo = nada
CompactDB = "Seu banco de dados, " & dbpath & ", foi compactado" & vbCrLf
Outro
CompactDB = "O caminho ou nome do banco de dados inserido não foi encontrado, tente novamente" & vbCrLf
Função
End If
End
%>
</div>
</div>
<form name="compact" method="post" action="compact.asp">
<div alinhar="centro">
<font size="2"><b><font color="#FF0000">
Opções de compactação, preencha com atenção! </font></b><br>
<br>
Digite o nome completo do banco de dados:
<input type="text" name="dbpath">
(Inclui extensões como MDB, ASA, ASP, etc.)<br>
<br>
<input type="checkbox" name="boolIs97" value="True">
Verifique se é um banco de dados ACCESS97<br>
(O padrão é o banco de dados ACCESS2000)<br>
<br>
<input type="submit" name="submit" value="Confirmar compactação">
</font></div>
</form>
<div align="center"><font size="2">
<%
Escurecer dbpath,boolIs97
caminhodb = request("caminhodb")
boolIs97 = request("boolIs97")
If dbpath <> "" Então
caminhodb = servidor.mappath(caminhodb)
resposta.write(CompactDB(dbpath,boolIs97))
Terminar se
%>
<br>
</font></div></body></html>