el Guille, la Web del Visual Basic, C#, .NET y más...

Restaurar una base de datos de SQL Server desde código (C#)

 
Publicado el 10/Ene/2008
Actualizado el 10/Ene/2008
Autor: Guillermo 'guille' Som

En este artículo te muestro el código de Visual C# 2005 (o superior) que puedes usar para restaurar una base de datos de SQL Server de la que previamente hiciste una copia de seguridad (backup).

 


 

Introducción:

Hace unos meses te mostré cómo hacer una copia de seguridad (por medio de código de VB y C#) de una base de datos de SQL Server.

En esta ocasión el código que te muestro es para lo contrario, es decir, para restaurar una copia (backup) que ya tengas.

He separado el código de Visual Basic del de C#, así que... si quieres ver el código de Visual Basic para restaurar una base de datos de SQL Server, supongo que ya sabes que debes pulsar en el link anterior... y si no lo sabes... pues... por eso te lo digo.

Nota:
Decirte que en las pruebas que he hecho, solo una base de datos se ha resistido a que la restaure... el error que me daba era de "TimeOut", pero ni cambiándole el valor de Time Out se ha solucionado el problema... te lo digo por si te pasa que no me vengas con quejas ni con preguntas de cómo solucionarlo, que si yo lo supiera, pues ya lo habría comentado... así que... si te surge ese problema, lo mejor es que lo comentes en mis foros a ver si alguien (más experto en SQL que yo), sabe la respuesta.

El código es bien simple, y esto solo vale para Visual C# 2005 o cualquier versión superior, pero yo solo lo he probado con Visual C# 2005 y Visual C# 2008.
De todas formas, si quieres usarlo en alguna versión anterior, solo tendrás que cambiar la forma de conectarse al servidor de SQL Server.

 

El ZIP con el código, incluye dos proyectos, uno para Visual Basic 2005 y el otro para Visual C# 2005.

 

Espero que te sea de utilidad.

Nos vemos.
Guillermo

 


Espacios de nombres usados en el código de este artículo:

System.Data.SqlClient
 

 


Nota:
La mayoría del código de ejemplo, contienen más cosas de las indicadas en el título o link, por tanto te recomiendo que le eches un vistazo por si está lo que realmente andas buscando.

También quiero recordarte que en la mayoría de los casos, al menos en los links con fecha 15 de enero 2002 y posteriores en los que "el Guille" es el autor (yo), el mismo código se muestra tanto para Visual Basic como para C#, salvo casos muy concretos en los que se explican cosas específicas de cada lenguaje... o porque no he tenido tiempo de convertirlo, je, je.

Notas:
-El código mostrado en estas páginas es de libre uso, el único requisito para poder usarlo, es citar la procedencia del mismo.
-Para poder usar los tutoriales o los artículos, por ejemplo para publicarlos en otro sitio, tendrás que pedir autorización al autor antes de publicarlos (completo o en parte), y si es una colaboración, mándame copia de esa autorización a mi cuenta de correo: mensaje EN elguille.info.
Gracias.


 


//-----------------------------------------------------------------------------
// Restaurar una copia de una base de SQL Server                    (10/Ene/08)
// Ejemplo para restaurar una copia de seguridad de SQL Server 2005
//
// ©Guillermo 'guille' Som, 2008
//-----------------------------------------------------------------------------

using System;
using System.Drawing;
using System.Windows.Forms;

using System.Data.SqlClient;

namespace restore_baseSQL_cs
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnRestore_Click(object sender, EventArgs e)
        {
            this.btnRestore.Enabled = false;
            this.btnRestore.Text = "Restaurando...";
            this.btnRestore.Refresh();

            string sBackup = "RESTORE DATABASE " + this.txtBase.Text + 
                             " FROM DISK = '" + this.txtBackup.Text + "'" +
                             " WITH REPLACE";

            SqlConnectionStringBuilder csb = new SqlConnectionStringBuilder();
            csb.DataSource = this.txtServidor.Text;
            // Es mejor abrir la conexión con la base Master
            csb.InitialCatalog = "master";
            csb.IntegratedSecurity = true;
            //csb.ConnectTimeout = 480; // el predeterminado es 15

            using(SqlConnection con = new SqlConnection(csb.ConnectionString))
            {
                try
                {
                    con.Open();

                    SqlCommand cmdBackUp = new SqlCommand(sBackup, con);
                    cmdBackUp.ExecuteNonQuery();
                    MessageBox.Show("Se ha restaurado la copia de la base de datos.", 
                                    "Restaurar base de datos", 
                                    MessageBoxButtons.OK, 
                                    MessageBoxIcon.Information);

                    con.Close();
                }
                catch(Exception ex)
                {
                    MessageBox.Show(ex.Message, 
                                    "Error al restaurar la base de datos", 
                                    MessageBoxButtons.OK, 
                                    MessageBoxIcon.Error);
                }
            }

            this.btnRestore.Text = "Restaurar copia";
            this.btnRestore.Enabled = true;
            this.btnRestore.Refresh();
        }
    }

Fichero con el código de ejemplo: Restore baseSQL.zip - 23.2 KB

(MD5 checksum: C9FCFFD7A5F20570776B0F569876232F)


 


La fecha/hora en el servidor es: 22/12/2024 17:37:02

La fecha actual GMT (UTC) es: 

©Guillermo 'guille' Som, 1996-2024