Вы находитесь на странице: 1из 6

Respaldar bases de datos de SQL Server con Visual Basic .NET Por Juan Carlos Rojas Vargas !

ubical "R#$ Costa Rica%

)ntroducci*n Generalmente cuando se desarrolla una aplicacin para un cliente, una de las preguntas importantes que se nos hacen es: Y los respaldos de la base de datos? Con SQL Server tenemos la posibilidad de crear planes de mantenimiento a los que podemos indicarles ciertas opciones, como por e emplo, la noti!icacin por correo electrnico" #e esta !orma de amos de lado el traba o de incluir en nuestro pro$ecto un mdulo u otra aplicacin e%terna para llevar a cabo los respaldos de in!ormacin" &ersonalmente, la desventa a de crear un plan de mantenimiento es que 'ste se e ecutar( con base a los par(metros que le ha$amos establecido $ no cuando el cliente desee crear un respaldo de su base de datos" )ambi'n, para modi!icar $*o e ecutar un plan de mantenimiento +en el momento que se decida,, es necesario que el cliente +o el usuario !inal de la aplicacin, tenga un poco de conocimientos de SQL Server, lo cual, si el mismo no cuenta con los conocimientos, signi!icar-a reali.ar una capacitacin en esa (rea $ como consecuencia perder-amos tiempo $ nuestro cliente deber( desembolsar m(s dinero" /ste peque0o documento se ha creado para indicar a los desarrolladores como llevar a cabo un respaldo de una base de datos utili.ando )ransact1SQL $ 2isual 3asic "4/)" Cabe mencionar que, actualmente con la tecnolog-a "4/) es posible crear planes de mantenimiento desde nuestra aplicacin, pero este no es nuestro caso, $a que lo haremos directamente con )ransact1SQL" Pasos para crear un respaldo desde nuestra aplicaci*n /sta es una breve lista de los pasos que debemos llevar a cabo para desarrollar una aplicacin sencilla que nos permita generar respaldos de !orma !(cil +pensado para usuarios !inales sin muchos conocimientos,: 5" 7" 8" 9" 6btener la lista de servidores SQL de la red Suministrar los datos de cone%in +enti'ndase como usuario $ contrase0a, 6btener el nombre de las bases de datos almacenadas en el servidor :ndicar la ubicacin $ el nombre del respaldo +generalmente el nombre de un respaldo es: el nombre de la base de datos con la !echa $ la hora en que se reali.a +tambi'n inclu$e la e%tensin "ba;,, por e emplo: ;ubicalorg1 7<<=<87<1589><?"ba;, @" Crear el respaldo de la base de datos seleccionada ?" :n!ormar al usuario de lo sucedido

P&gina ' de (

Respaldar bases de datos de SQL Server con Visual Basic .NET Por Juan Carlos Rojas Vargas !ubical "R#$ Costa Rica%

Creaci*n de la inter,a- de la aplicaci*n /n la siguiente imagen puede observarse la apariencia de la aplicacin:

Cada uno le da la apariencia que desee, o que crea m(s conveniente para que el usuario se sienta m(s cmodo" Lo importante es que, para desarrollar el e emplo, la inter!a. cuente con todos los controles que se muestran en la imagen anterior" A continuacin se presenta una lista con los tipos, nombres $ propiedades de los controles m(s importantes que vamos a utili.ar: L)ST. /E C"NTR"LES . 0T)L)1.R T)P" Combo3o% )e%t3o% N"2BRE cboServidor cbo3# t%tCsuario t%tContrasena t%t#estino btnConectar btnDespaldar btnCerrar PR"P)E/./ #rop#oBnSt$le #rop#oBnSt$le V.L"R #rop#oBnList #rop#oBnList

3utton

Dead6nl$ 3ac;Color )e%t )e%t )e%t

)rae EindoB CFonectar FDespaldar FCerrar

P&gina + de (

Respaldar bases de datos de SQL Server con Visual Basic .NET Por Juan Carlos Rojas Vargas !ubical "R#$ Costa Rica%

Progra4ando la utilidad de respaldos Ya que tenemos lista la inter!a. procederemos a agregar el cdigo para darle vida a nuestro programa" &ero antes, debemos agregar las siguientes re!erencias: 5" Gicroso!t"SQLServer"Connection:n!o 7" Gicroso!t"SQLServer"Smo 8" Gicroso!t"SQLServer"Smo/num &ara agregar las re!erencias podemos hace clic en la opcin Agregar re!erencia, ubicada en el menH &ro$ecto" /n el !ormulario que se nos presenta buscamos el nombre de las mencionadas anteriormente $ listo" )ambi'n, vamos a agregar al inicio de nuestra clase +o !ormulario, las siguientes l-neas:
Imports Microsoft.SqlServer.Management.Smo Imports system.Data.SqlClient

Con todo esto listo, comen.aremos a escribir el cdigo necesario para que la aplicacin comience a !uncionar" Lo primero que programaremos ser( un procedimiento con el cual vamos a obtener el nombre de los servidores SQL"
Private Sub psServidores() Me.cboServidor.Items.Clear() For ac! svrServidor "s #egisteredServers.#egisteredServer In $ Smo"pplication.SqlServer#egistrations. num#egisteredServers Me.cboServidor.Items."dd(svrServidor.%ame) %e&t If Me.cboServidor.Items.Count ' ( )!en $ Me.cboServidor.SelectedInde& * ( nd Sub

&ara cargar nuestro Combo3o% con la lista de servidores, llamamos al procedimiento psServidores en el evento Load del !ormulario:
Private Sub frmPrincipal$+oad(,y-al sender "s System..b/ect0 $ ,y-al e "s System. vent"rgs) 1andles My,ase.+oad Call Me.psServidores() nd Sub

Ahora vamos a programar el evento Clic; del botn btnConectar" &or medio del siguiente cdigo veri!icamos que se ha$a seleccionado un servidor SQL $ proporcionado el nombre de usuario +la contrase0a no se veri!ica, $a que en muchos casos ha$ personas que la de an en blancoI un gran riesgo de seguridad,"

P&gina 3 de (

Respaldar bases de datos de SQL Server con Visual Basic .NET Por Juan Carlos Rojas Vargas !ubical "R#$ Costa Rica%

Con el siguiente cdigo obtenemos el nombre de las bases de datos almacenadas en el servidor seleccionado por el usuario:
Private Sub btnConectar$Clic2(,y-al sender "s System..b/ect0 $ ,y-al e "s System. vent"rgs) 1andles btnConectar.Clic2 If Me.cboServidor.)e&t 3' 44 "nd Me.t&t5suario.)e&t.)rim 3' 44 )!en Dim svrServidor "s %e6 Server(Me.cboServidor.)e&t) Me.cbo,D.Items.Clear() )ry 7it! svrServidor .ConnectionConte&t.+oginSecure * False .ConnectionConte&t.+ogin * Me.t&t5suario.)e&t.)rim .ConnectionConte&t.Pass6ord * Me.t&tContrasena.)e&t.)rim For ac! bd,ase "s Database In svrServidor.Databases Me.cbo,D.Items."dd(bd,ase.%ame) %e&t nd 7it! If Me.cbo,D.Items.Count ' ( )!en Me.cbo,D.SelectedInde& * ( Catc! e& "s &ception Me.cbo,D.Items.Clear() Msg,o&(e&.Message0 Msg,o&Style.Critical) nd )ry lse If Me.cboServidor.)e&t.)rim * 44 )!en If Msg,o&(4%o se encontraron servidores S8+ 9Desea 4 $ : 4actuali;ar la lista<40 Msg,o&Style. &clamation = $ Msg,o&Style.>es%o) * Msg,o&#esult.>es )!en Call Me.psServidores() nd If lse Msg,o&(4Por favor0 digite el nombre de usuario.40 $ Msg,o&Style.Critical) Me.t&t5suario.Clear() ? Me.t&t5suario.Focus() nd If nd If nd Sub

&er!ecto, $a nuestra aplicacin obtiene el nombre de los servidores SQL encontrados $ adem(s, nos muestra el nombre de las bases de datos almacenadas en cualquiera de ellos" 2amos a agregar el cdigo para el evento Clic; del botn btn/%aminar, aspermitiremos al usuario elegir el directorio donde se almacenar( el respaldo:
Private Sub btn &aminar$Clic2(,y-al sender "s System..b/ect0 $ ,y-al e "s System. vent"rgs) 1andles btn &aminar.Clic2 Dim dlgDestino "s %e6 Folder,ro6serDialog 7it! dlgDestino .Description * 4Seleccione el directorio de destino?4 If .S!o6Dialog * 7indo6s.Forms.Dialog#esult..@ )!en P&gina 5 de (

Dim strDestino "s String * .SelectedPat!.)oString If %ot strDestino. nds7it!(4A4) )!en strDestino * strDestino : 4A4 nd If Me.t&tDestino.)e&t * strDestino nd If nd 7it! nd Sub

Casi lista la aplicacinI lo Hnico que nos !alta es crear el respaldo de la base de datos seleccionada por el usuario" &ara ello vamos a crear una cone%in al servidor SQL $ e ecutar el comando de )ransact1SQL que nos permitir( crearlo" Adem(s, reali.aremos una veri!icacin para determinar si el usuario ha seleccionado una base de datos $ especi!icado el directorio de destino del respaldo" /l nombre del respaldo ser( asignado autom(ticamente, el !ormato ser( el siguiente: nombreoriginal1!echa1hora"ba;"
Private Sub btn#espaldar$Clic2(,y-al sender "s System..b/ect0 $ ,y-al e "s System. vent"rgs) 1andles btn#espaldar.Clic2 If Me.cbo,D.)e&t 3' 44 "nd Me.t&tDestino.)e&t.)rim 3' 44 )!en Dim conCone&ion "s %e6 SqlConnection(4data source*4 $ : Me.cboServidor.)e&t : 4Buser id*4 : Me.t&t5suario.)e&t.)rim $ : 4Bpass6ord*4 : Me.t&tContrasena.)e&t.)rim : 4Binitial 4 $ : 4catalog*4 : Me.cbo,D.)e&t : 4B4) )ry Dim str%ombre$#espaldo "s String * Me.cbo,D.)e&t $ : 4C4 : Date.%o6.)oString(4yyyyMMdd4) : 4C4 $ : Date.%o6.)oString(411mmss4) : 4.ba24 conCone&ion..pen() Dim coS8+ "s %e6 SqlCommand(4,"C@5P D")","S D4 $ : Me.cbo,D.)e&t : 4E ). DIS@*F4 : Me.t&tDestino.)e&t $ : str%ombre$#espaldo : 4F40 conCone&ion) coS8+. &ecute%on8uery() Msg,o&(4#espaldo creado correctamente ?)40 $ Msg,o&Style.Information) Catc! e& "s &ception Msg,o&(e&.Message0 Msg,o&Style.Critical) Finally conCone&ion.Close() nd )ry lse If Me.cbo,D.)e&t * 44 )!en If Me.cboServidor.)e&t 3' 44 )!en Msg,o&(4Por favor0 conGctese al servidor.40 $ Msg,o&Style.Critical) Me.btnConectar.Focus() nd If lse

Msg,o&(4 specifique el destino del respaldo.40 $ Msg,o&Style.Critical) Me.btn &aminar.Focus() nd If nd If nd Sub

Notas ,inales del autor /ste es el !inal del art-culo, el cdigo no est( comentado ni tampoco se da mucha in!ormacin acerca de para que sirve cada cosaI pero en !in, espero que ha$a sido de su a$uda" /l cdigo ha sido desarrollado de la !orma m(s simple para que todos los entiendan" &ara obtener m(s in!ormacin acerca del comando 3ACJC& de )ransact1 SQL, puede consultar la siguiente in!ormacin en la a$uda de SQL Server 7<<@: ms1help:**GS"SQLCC"v=*GS"SQLS2D"v="en*tsqlre!=*html*K=a9?@Ka1?7!51 97K=1 K=K71!<>777=>7<a5"htm /sto lo he de ado para el !inal, el e emplo se ha desarrollado utili.ando 2isual 3asic "4/) 7<<@ $ SQL Server 7<<@, pero deber-a !uncionar con cualquier versin de las aplicaciones mencionadas" Si usted tiene dudas acerca de lo mencionado en este documento, sugerencias, correcciones u otras inquietudes, por !avor, pngase en contacto con el autor por medio de correo electrnico" /ste documento puede distribuirse completa o parcialmente por cualquier medio, siempre $ cuando se mencionen los datos del autor"

Juan Carlos Rojas Vargas !ubical "R#$ Costa Rica E64ail7 juancarlosr84sn.co4

Вам также может понравиться