compactar bases de datos

06/02/2004 - 10:34 por Raquel | Informe spam
Hola a todos
cómo podría compactar bases de datos en access 2000 y en
sql server mediante un código en ASP?
encontré algo por internet, pero no debo especificar bien
las rutas porque no me funciona, me podrías dar un ejemplo
de cómo debo definir el path, etc? muchas gracias por
adelantado. Lo que encontré era lo siguiente:
<%
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>
 

Leer las respuestas

#1 Benjamin Porter
06/02/2004 - 14:13 | Informe spam
En primer lugar, aclarar que necesitas permisos de escritura sobre la base
de datos y la carpeta en que ella está.

Para compactar una base de datos access:
http://www.mundoprogramacion.com/vb_db.htm#db009
Nota: El codigo es para VB, pero sabrás fácilmente adaptarlo.


Atentamente
_____________________
Benjamin Porter

(Evidentemente sin el ".punto")








"Raquel" escribió en el mensaje
news:b1c001c3ec94$5dc1c200$
Hola a todos
cómo podría compactar bases de datos en access 2000 y en
sql server mediante un código en ASP?
encontré algo por internet, pero no debo especificar bien
las rutas porque no me funciona, me podrías dar un ejemplo
de cómo debo definir el path, etc? muchas gracias por
adelantado. Lo que encontré era lo siguiente:
<%
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>

Preguntas similares