Está en la página 1de 13

Trucos en ado.

net
/w EPDw UKMTg4

ADO.NET

Hacer copia de seguridad de bases de datos de SQL Server con Visual C# 2005 (y con pequeos cambios con cualquier versin de Visual C#) Introduccin: El cdigo que te voy a mostrar est adaptado y convertido a C# de una respuesta en mis foros: http://foros.elguille.info/Mensajes.aspx?ID=24924 El autor de ese "post" es rvl as que... todos los "crditos" son para l, ya que lo nico que he hecho yo es hacerlo funcional y con un ejemplo, tanto para Visual Basic 2005 como para Visual C# 2005, aunque en esta pgina solo te muestro el cdigo de C#, el cdigo para Visual Basic 2005 est en este link: Hacer copia de seguridad de bases de datos de SQL Server con Visual Basic 2005

Por qu solo para Visual C# 2005? Bueno, en realidad vale para cualquier versin de Visual C#, lo que pasa es que en este cdigo utilizo una cosa que es exclusiva de Visual C# 2005: la clase SqlConnectionStringBuilder que sirve para "crear" cadenas de conexiones a bases de datos de forma ms simple. Pero si quieres usar este cdigo con alguna versin anterior de C#, simplemente quita el uso de esa clase y crea la cadena de conexin como siempre lo has hecho.

Y ya sin ms prembulos, veamos la aplicacin de ejemplo y el cdigo que hay que usar para hacer una copia de seguridad de una base de SQL Server mediante cdigo. En la figura 1 puedes ver el formulario en tiempo de diseo.
Formatted: Font: Italic

Figura 1. El formulario en tiempo de diseo

Ah se indica el servidor de SQL Server que queremos usar, el nombre de la base de datos de la que queremos hacer la copia y el nombre del fichero en el que se har la copia de seguridad. Al pulsar en el botn "Hacer backup" se ejecutar el siguiente cdigo que es el encargado de hacer esa copia de seguridad. El cdigo de ese mtodo es el siguiente: string sBackup = "BACKUP DATABASE " + this.txtBase.Text + " TO DISK = N'" + this.txtBackup.Text + "' WITH NOFORMAT, NOINIT, NAME =N'" + this.txtBase.Text + "' -Full Database Backup',SKIP, STATS = 10";

SqlConnectionStringBuilder csb = new SqlConnectionStringBuilder();

csb.DataSource = this.txtServidor.Text; csb.InitialCatalog = this.txtBase.Text; csb.IntegratedSecurity = true;

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

SqlCommand cmdBackUp = new SqlCommand(sBackup, con);

cmdBackUp.ExecuteNonQuery();

MessageBox.Show("Se ha creado un BackUp de La base de datos satisfactoriamente", "Copia de seguridad de base de datos", MessageBoxButtons.OK, MessageBoxIcon.Information);

con.Close(); } catch(Exception ex) { MessageBox.Show(ex.Message, "Error al copiar la base de datos", MessageBoxButtons.OK, MessageBoxIcon.Error); } } Y esto es todo. En este ejemplo, se utilizan las credenciales del usuario de Windows, ni que decir tiene, que si ese cdigo lo usas con un usuario que no tiene los "permisos" suficientes, la copia de seguridad fallar.

Una recomendacin Si el fichero que indicas en Backup ya existe, no se sobrescribe, ya que el sistema de copia de seguridad de SQL Server lo que hace es "agregarla", es decir, si ese fichero ya existe, y por ejemplo ocupa 40 MB, al hacer una segunda copia de seguridad en ese mismo fichero, el tamao crecer hasta el doble, es decir, se van aadiendo las nuevas copias de seguridad que se indiquen. Por tanto, si no es esa tu intencin, lo que te recomiendo es que despus de hacer la copia de seguridad lo copies a otro sitio o le cambies el nombre a las nuevas copias.

Crear base de datos y ejecutar scripts de SQL con el Management Studio

En este artculo te explico los pasos que debes dar para crear una base de datos de SQL Server 2005 con el Management Studio. Adems de ejecutar ciertos comandos "scripts" para crear una tabla y asignarle algunos datos.

Introduccin: En este artculo te explico los pasos que debes dar para crear una base de datos de SQL Server 2005 con el Management Studio. Adems de ejecutar ciertos comandos "scripts" para crear una tabla y asignarle algunos datos. Estos pasos son para crear la base de datos PruebasGuille y la tabla Clientes. Adems de aadirle algunos datos. Para crear la tabla y aadir los datos, usars dos ficheros con el cdigo de T-SQL (Transact SQL) necesario para ejecutarlo desde una ventana de cdigo del Management Studio. Aqu te lo explico para la versin Express, pero es vlido tambin para la versin "normal" del Management Studio de SQL Server 2005.

Los pasos que debes dar son: 1- Abre el Management Studio y selecciona la instancia en la que quieres trabajar, en la figura 1 es la instancia de SQLEXPRESS.

Formatted: Font: Italic

Figura 1. Conectar a un servidor de bases de datos con el Management Studio

2- Con el botn derecho (o el botn secundario), pulsa en Bases de datos y del men selecciona Nueva base de datos, tal como te muestro en la figura 2.

Formatted: Font: Italic

Figura 2. Crear una nueva base de datos

3- Eso har que te muestre una ventana como la de la figura 3. A la base de datos, le vas a dar el nombre PruebasGuille, as que escribe ese nombre en la caja de textos correspondiente y despus pulsa en el botn Aceptar.

Formatted: Font: Italic

Figura 3. Cuadro de dilogo de Nueva base de datos

4- Ahora vamos a escribir el cdigo para crear la tabla Clientes. No te asustes! que no vas a escribir nada, ya que ese cdigo lo puedes obtener de un fichero que ya tengas. En este caso, el que se acompaa con el cdigo fuente del artculo de Auto completar usando una base de datos (o si lo prefieres: Buscar en una base de datos mientras se escribe). 5- En la base de datos que hemos creado, pulsa con el botn derecho del ratn para que te muestre el men contextual, del que seleccionars Nueva consulta, tal como puedes ver en la figura 4.

Formatted: Font: Italic

Figura 4. Crear una nueva consulta en Management Studio

6- Eso har que se muestre una ventana en el panel de la derecha (junto a la ficha Resumen). 7- Abre el fichero Crear la tabla de Clientes de PruebasGuille.sql con un editor de textos y selecciona todo el texto, lo copias y lo pegas en esa ventana. 7.1- Tambin puedes abrir el fichero, en ese caso, te preguntar en que instancia, etc. lo quieres ejecutar (la misma pregunta que te hace en la figura 1). 8- Una vez que tienes el texto pegado en la ventana de consultas, pulsa en el botn Ejecutar (ver la figura 5), o bien pulsa la tecla F5.

Formatted: Font: Italic

Figura 5. Ejecutar la consulta

9- Esto crear la tabla Clientes con los datos que se indican en el fichero que son los mismos que puedes ver en la figura 5. 10- Si expandes la base de datos y pulsas en Tablas, vers que ya est la tabla creada, tal como te muestro en la figura 6.

Formatted: Font: Italic

Figura 6. La tabla de Clientes ya est creada

11- Ahora vamos a aadir unos cuantos datos. 12- Abre el fichero Agregar datos de ejemplo a la tabla Clientes de PruebasGuille.sql y copia el contenido y lo pegas en la misma ventana de consultas que tenemos. 12.1- Recuerda que tambin puedes abrir el fichero.

13- Una vez que tienes el cdigo de insercin de los datos de ejemplo, pulsa nuevamente en Ejecutar y se aadirn esos datos. 14- Y si abres la tabla de Clientes para que te muestre lo que tiene, vers que ser algo como lo que te muestro en la figura 7.

Formatted: Font: Italic

Figura 7. Los datos que acabamos de aadir a la tabla de Clientes

15- Y una vez que tienes estos datos en la base de datos, ya puedes usar el cdigo, por ejemplo, el del artculo de buscar mientras se escribe, tal como ves en la figura 8.
Formatted: Font: Italic

Figura 8. Ya podemos acceder a los datos

Como te puedes imaginar, en la ventana de consulta puedes escribir el cdigo de SQL que quieras, y as de camino pruebas cosas antes de usarla en tu cdigo. Y esto es todo... espero que te haya quedado claro y que te sobren algunos Euros... que de vez en cuando hay que acordarse del "viejo" Guille... je, je.

ADO.NET Restaurar una base de datos de SQL Server desde cdigo (C#) En este artculo te muestro el cdigo 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). Introduccin: Hace unos meses te mostr cmo hacer una copia de seguridad (por medio de cdigo de VB y C#) de una base de datos de SQL Server. En esta ocasin el cdigo que te muestro es para lo contrario, es decir, para restaurar una copia (backup) que ya tengas. He separado el cdigo de Visual Basic del de C#, as que... si quieres ver el cdigo 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 cambindole 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 cmo solucionarlo, que si yo lo supiera, pues ya lo habra comentado... as que... si te surge ese problema, lo mejor es que lo comentes en mis foros a ver si alguien (ms experto en SQL que yo), sabe la respuesta. El cdigo es bien simple, y esto solo vale para Visual C# 2005 o cualquier versin superior, pero yo solo lo he probado con Visual C# 2005 y Visual C# 2008. De todas formas, si quieres usarlo en alguna versin anterior, solo tendrs que cambiar la forma de conectarse al servidor de SQL Server.

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

System.Data.SqlClient

El cdigo para Visual C# 2005 o superior: //----------------------------------------------------------------------------// 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 conexin 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(); } }

También podría gustarte