Access - compactar con sql

 
Vista:

compactar con sql

Publicado por s0ck37 (1 intervención) el 06/01/2006 11:09:34
Hola:

He visto que en Access hay una opción de menú que permite compactar y reparar la base de datos. Yo utilizo una base de datos access desde un programa en c#. Me gustaría saber si existe algun comando sql que me permita compactar la base de datoss desde una consulta sql para poder hacerlo desde mi programa.

Un saludo y gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Compactar y reparar la base de datos desde una consulta SQL

Publicado por Alejandro (4142 intervenciones) el 15/06/2023 22:11:16
Lamentablemente, no es posible compactar y reparar una base de datos de Access directamente desde una consulta SQL. La opción de compactar y reparar la base de datos se encuentra dentro del entorno de Access y no está disponible a través de comandos SQL estándar.

Sin embargo, puedes utilizar código C# para ejecutar el proceso de compactar y reparar la base de datos de Access desde tu programa. Aquí tienes un ejemplo de cómo hacerlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using System;
using System.Data.OleDb;
 
public class CompactadorAccess
{
    public static void CompactarBaseDatos(string rutaBaseDatos)
    {
        string strProvider = "Provider=Microsoft.Jet.OLEDB.4.0;";
        string strSourceDB = "Data Source=" + rutaBaseDatos;
        string strDestDB = "Data Source=" + rutaBaseDatos + "_temp";
 
        // Cerrar la conexión existente a la base de datos
        OleDbConnection.ReleaseObjectPool();
 
        // Compactar y reparar la base de datos
        using (OleDbConnection con = new OleDbConnection(strProvider + strSourceDB))
        {
            con.Open();
            using (OleDbCommand cmd = new OleDbCommand())
            {
                cmd.Connection = con;
                cmd.CommandText = "CompactDatabase " + strSourceDB + " " + strDestDB;
                cmd.ExecuteNonQuery();
            }
            con.Close();
        }
 
        // Reemplazar la base de datos original con la compactada y reparada
        System.IO.File.Delete(rutaBaseDatos);
        System.IO.File.Move(rutaBaseDatos + "_temp", rutaBaseDatos);
    }
}

Puedes llamar al método `CompactarBaseDatos` y proporcionar la ruta de la base de datos de Access como argumento para compactar y reparar la base de datos desde tu programa en C#.

Recuerda incluir la referencia al ensamblado `System.Data.OleDb` en tu proyecto C# para poder utilizar las clases y métodos necesarios.

Espero que esta solución te sea útil.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar