NET
Por Juan Carlos Rojas Vargas <Kubical ORG, Costa Rica>
Introducción
Con SQL Server tenemos la posibilidad de crear planes de mantenimiento a los que
podemos indicarles ciertas opciones, como por ejemplo, la notificación por correo
electrónico. De esta forma dejamos de lado el trabajo de incluir en nuestro
proyecto un módulo u otra aplicación externa para llevar a cabo los respaldos de
información.
Esta es una breve lista de los pasos que debemos llevar a cabo para desarrollar
una aplicación sencilla que nos permita generar respaldos de forma fácil (pensado
para usuarios finales sin muchos conocimientos):
Página 1 de 6
Respaldar bases de datos de SQL Server con Visual Basic .NET
Por Juan Carlos Rojas Vargas <Kubical ORG, Costa Rica>
Cada uno le da la apariencia que desee, o que crea más conveniente para que el
usuario se sienta más cómodo. Lo importante es que, para desarrollar el ejemplo,
la interfaz cuente con todos los controles que se muestran en la imagen anterior.
A continuación se presenta una lista con los tipos, nombres y propiedades de los
controles más importantes que vamos a utilizar:
Página 2 de 6
Respaldar bases de datos de SQL Server con Visual Basic .NET
Por Juan Carlos Rojas Vargas <Kubical ORG, Costa Rica>
Ya que tenemos lista la interfaz procederemos a agregar el código para darle vida
a nuestro programa. Pero antes, debemos agregar las siguientes referencias:
1. Microsoft.SQLServer.ConnectionInfo
2. Microsoft.SQLServer.Smo
3. Microsoft.SQLServer.SmoEnum
Para agregar las referencias podemos hace clic en la opción Agregar referencia,
ubicada en el menú Proyecto. En el formulario que se nos presenta buscamos el
nombre de las mencionadas anteriormente y listo.
Imports Microsoft.SqlServer.Management.Smo
Imports system.Data.SqlClient
Con todo esto listo, comenzaremos a escribir el código necesario para que la
aplicación comience a funcionar. Lo primero que programaremos será un
procedimiento con el cual vamos a obtener el nombre de los servidores SQL.
Ahora vamos a programar el evento Click del botón btnConectar. Por medio del
siguiente código verificamos que se haya seleccionado un servidor SQL y
proporcionado el nombre de usuario (la contraseña no se verifica, ya que en
muchos casos hay personas que la dejan en blanco; un gran riesgo de seguridad).
Página 3 de 6
Respaldar bases de datos de SQL Server con Visual Basic .NET
Por Juan Carlos Rojas Vargas <Kubical ORG, Costa Rica>
Me.cboBD.Items.Clear()
Try
With svrServidor
.ConnectionContext.LoginSecure = False
.ConnectionContext.Login = Me.txtUsuario.Text.Trim
.ConnectionContext.Password = Me.txtContrasena.Text.Trim
For Each bdBase As Database In svrServidor.Databases
Me.cboBD.Items.Add(bdBase.Name)
Next
End With
If Me.cboBD.Items.Count > 0 Then Me.cboBD.SelectedIndex = 0
Catch ex As Exception
Me.cboBD.Items.Clear()
MsgBox(ex.Message, MsgBoxStyle.Critical)
End Try
Else
If Me.cboServidor.Text.Trim = "" Then
If MsgBox("No se encontraron servidores SQL ¿Desea " _
& "actualizar la lista?", MsgBoxStyle.Exclamation + _
MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
Call Me.psServidores()
End If
Else
MsgBox("Por favor, digite el nombre de usuario.", _
MsgBoxStyle.Critical)
Me.txtUsuario.Clear() : Me.txtUsuario.Focus()
End If
End If
End Sub
Vamos a agregar el código para el evento Click del botón btnExaminar, así
permitiremos al usuario elegir el directorio donde se almacenará el respaldo:
With dlgDestino
.Description = "Seleccione el directorio de destino:"
If .ShowDialog = Windows.Forms.DialogResult.OK Then
Página 4 de 6
Respaldar bases de datos de SQL Server con Visual Basic .NET
Por Juan Carlos Rojas Vargas <Kubical ORG, Costa Rica>
Casi lista la aplicación; lo único que nos falta es crear el respaldo de la base de
datos seleccionada por el usuario. Para ello vamos a crear una conexión al servidor
SQL y ejecutar el comando de Transact-SQL que nos permitirá crearlo. Además,
realizaremos una verificación para determinar si el usuario ha seleccionado una
base de datos y especificado el directorio de destino del respaldo.
Try
Dim strNombre_Respaldo As String = Me.cboBD.Text _
& "-" & Date.Now.ToString("yyyyMMdd") & "-" _
& Date.Now.ToString("HHmmss") & ".bak"
conConexion.Open()
Dim coSQL As New SqlCommand("BACKUP DATABASE [" _
& Me.cboBD.Text & "] TO DISK='" & Me.txtDestino.Text _
& strNombre_Respaldo & "'", conConexion)
coSQL.ExecuteNonQuery()
MsgBox("Respaldo creado correctamente :)", _
MsgBoxStyle.Information)
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
Finally
conConexion.Close()
End Try
Else
If Me.cboBD.Text = "" Then
If Me.cboServidor.Text <> "" Then
MsgBox("Por favor, conéctese al servidor.", _
MsgBoxStyle.Critical)
Me.btnConectar.Focus()
End If
Else
Página 5 de 6
Respaldar bases de datos de SQL Server con Visual Basic .NET
Por Juan Carlos Rojas Vargas <Kubical ORG, Costa Rica>
ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.en/tsqlref9/html/89a4658a-62f1-4289-
8982-f072229720a1.htm
E-mail: juancarlosr@msn.com
Página 6 de 6