sábado, 5 de septiembre de 2009

Backup con SMO en C#

Así ya tenemos a los hermanitos (un ejemplo en el blog en VB y otro en C#):

try
{
    using (SqlConnection cn = new SqlConnection(llConexion.Text))
    {
        cn.Open();
        serverConnection = new ServerConnection(cn);
        Backup bck = new Backup();
        bck.Database = serverConnection.DatabaseName;
        bck.Devices.Add(new BackupDeviceItem(rutaBackup + @"\" + serverConnection.DatabaseName + ".BAK", DeviceType.File));
        bck.Action = BackupActionType.Database;
        bck.SqlBackup(new Server(serverConnection));
        MessageBox.Show("Proceso completado");
    }          
}
catch (SmoException ex)
{
    MessageBox.Show(ex.Message);
}

4 comentarios:

Narciso J dijo...

Buenas Tardes, estoy intentando utilizar el codigo anterior y me sale el siguiente error: Error de Copia de seguridad para Servidor 'Servidor\SQLEXPRESS'.

A ver si puedes ayudarme. Un Saludo

Francisco Ruiz dijo...

Hola Narciso, al ser SQLExpress puede que no tengas permisos de escritura en la ruta dónde vas a realizar el backup.
Revisa esto y si puedes indicarme la cadena de conexión que usas y la ruta dónde intentas hacer el backup en el código igual nos dice algo más.

Jonathan dijo...

@Narciso: Sé que mi comentario llega un poco tarde, pero puede servirle a cualquier otra persona: Me ha pasado lo mismo, tienes que dar permiso al usuario con el que se ejecuta SQL SERVER para que pueda escribir en esa carpeta, o bien decirle a SQL SERVER que se inicie como un servicio.

@Francisco:¿Cual sería el código para la restauración? He intentado escribir uno muy similar a este pero usando la clase RESTORE en lugar de la clase BACKUP... pero me un error poco específico.

Un saludo

Francisco Ruiz dijo...

Hola Jonathan, en mi último post tienes lo que pedías, espero te sirva.

Salu2.