Foro de Informatica
" Hay la misma diferencia entre un sabio y un ignorante que entre un hombre vivo y un cadáver "

- Aristóteles -



        


Google
 
Web www.ComputerFacil.com
Forista del Mes:

amateos1404




  Reply to this topicStart new topicStart Poll

> Compactar Y Reparar Base De Datos Mediante Script
dejavi
  Publicado: Aug 29 2007, 04:06 PM
Quote Post


Tera user
Group Icon

Grupo: Moderadores
Mensajes: 3.733
Miembro nº: 17.695
Registrado: 18-January 07



290807.




El siguiente código nos permite compactar y reparar una base de datos Access en forma remota. Es decir sin tener que hacerlo a mano entrando a la base de datos y elegir la opcion de Compactar / Reparar.

Para aquellos que no lo sepan, cuando usamos bases de datos (en este caso Access), al eliminar informacion, queda el "hueco" de los datos eliminados, ocupando el lugar que anteriormente ocupaban, y los bytes ocupados siguen por la informacion borrada siguen alli estorbando (ocupando) ya que el registro, sigue "estando".

Para compactar la base de datos a su tamaño que deberia estar, dentro del access vamos a:
Herramientas > Utilidades de las base de datos > Compactar y reparar base de datos

Y esto nos reduce el tamaño a los bytes que realmente ocupan los datos.

En fin, este script hace lo mismo pero en forma remota. Aqui va.

<%
Const DriverConexion = "Provider=Microsoft.Jet.OLEDB.4.0; Data source="
Dim strDatabase, strFolder, strFileName
'#################################################
'# Edite las siguientes dos líneas
'# Defina el path de la base de datos. Si desea hacerlo completo, puede hacerlo
StrCarpeta = server.mappath("./db")
'##################################################

'Compacta la base de datos
Private Sub dbCompact(StrBaseDeDatos)
if right(StrCarpeta,1) <> "\" then StrCarpeta = StrCarpeta & "\"
Dim SourceConn, DestConn, oJetEngine, oFSO
SourceConn = DriverConexion & StrCarpeta & StrBaseDeDatos
DestConn = DriverConexion & StrCarpeta & "Temp" & StrBaseDeDatos
Set oFSO = Server.CreateObject("Scripting.FileSystemObject")
Set oJetEngine = Server.CreateObject("JRO.JetEngine")

If Not oFSO.FileExists(StrCarpeta & StrBaseDeDatos) Then
Response.Write ("Base no encontrada: " & StrCarpeta & StrBaseDeDatos)
else
If oFSO.FileExists(StrCarpeta & "Temp" & StrBaseDeDatos) Then
Response.Write ("Error. Intente Nuevamente.")
oFSO.DeleteFile (StrCarpeta & "Temp" & StrBaseDeDatos)
else
oJetEngine.CompactDatabase SourceConn, DestConn
oFSO.DeleteFile StrCarpeta & StrBaseDeDatos
oFSO.MoveFile StrCarpeta & "Temp"& StrBaseDeDatos, StrCarpeta& StrBaseDeDatos
Response.Write ("* La base de datos <B'>" & Request.form("DBFileName") & "</B'> fue compactada con exito.")
End If
End If

Set oFSO = Nothing
Set oJetEngine = Nothing
End Sub

'Pinta la lista de bases en ese directorio
Private Sub dbList
Dim oFolders, i
i = 0
Set oFolders = Server.CreateObject("Scripting.FileSystemObject")
Response.Write ("<SELECT name='DBFileName''>")
For Each Item In oFolders.GetFolder(StrCarpeta).Files
If LCase(Right(Item, 4)) = ".mdb" Then
'corrijo el path, y saco la "\"
item = Replace(lcase(Item), lcase(StrCarpeta), "")
item = Replace(Item, "\", "")
Response.Write ("<OPTION value='" & item &"'>" & item & "</OPTION'>")
i = i+1
End If
Next
Response.Write ("</SELECT'>")
Response.Write ("<BR'><BR'>En la carpeta <b'>"& StrCarpeta &"</b'> hay <b'>"& i &"</b'> bases de datos Access.")
Set oFolders = Nothing
End Sub

Select Case Request.form("compactar")
Case "Compactar"
dbCompact Request.form("DBFileName")
End Select
%>

<p align="center"><b>Seleccionar la base para compactar de la lista</b>
<form method="POST" action="" id=form1 name=form1>
<%dbList%><BR><BR>
<input type="submit" value="Compactar" name="compactar">
</form></p>

---------------------------------------------------------------------------------------------

Lo unico que hay que editar dentro del script es el path al directorio donde se encuentra la base de datos.
El propio script recorre el directorio y muestra un combo con todas las bases que estan alli y permite seleccionarla para compactarla

Los que deban modificar el DRIVER de la base de datos, pueden hacer con cuidado también.






thumbsup.gif






--------------------
user posted image
PMEmail Poster
Top
0 usuario(s) está(n) leyendo esta discusión (0 invitado(s) y 0 usuario(s) anónimo(s))
0 miembro(s):

Topic Options Reply to this topicStart new topicStart Poll

 


ComputerFacil.com © 2006
          Webs Afiliadas - Contacto
Ofertas PCs :: Consultor de Marketing Online :: Foros :: Posicionamiento Web :: Foros de Informatica :: Foros :: eurodipity :: elhacker