Compattare un Database Access


Le dimensioni di un database crescono progressivamente durante il suo utilizzo. Per questo può essere molto utile una compattazione del database stesso, in modo tale da migliorarne le prestazioni e risparmiare spazio su disco.

Di seguito è presentata una funzione che effettua la compressione di un database. I parametri che riceve sono 2:
dbname: è il nome del database
password: è l'eventuale password con cui è protetto il database.

In questo esempio, viene compattato il database utenti.mdb. Supponiamo che il database non sia protetto da password, per cui il secondo parametro sarà una stringa vuota.

<%
'compatta il database dbname
Function CompactDB(dbname, password)

  Dim dbpath
  dbpath = Server.MapPath(dbname)

  Dim cnfrom, cnto
  cnfrom = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&dbpath
  cnto = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&dbpath&".temp"

  'se il db è protetto da password...
  If password<>"" Then

    cnfrom = cnfrom&";Jet OLEDB:Database Password="&password
    cnto = cnto&";Jet OLEDB:Database Password="&password
  End If

  Dim engine
  Set engine = Server.CreateObject("JRO.JetEngine")
  'compatta il database
  engine.CompactDatabase cnfrom, cnto


  Dim fso
  Set fso = Server.CreateObject("Scripting.FileSystemObject")
  'il db originale viene eliminato
   fso.DeleteFile dbpath

  'il db appena compresso viene rinominato col nome del db originale
  fso.MoveFile dbpath&".temp", dbpath


  Set fso = nothing
  Set engine = nothing
End Function

'chiamo la funzione per la compressione del database
Call CompactDB("utenti.mdb", "")


Response.Write("Il DataBase è stato compattato con successo!")
%>