Sie sind auf Seite 1von 7

PROGRAMAR BACKUPS AUTOMATICOS PARA SQL SERVER EXPRESS (2005/2008) Problema : Una parte muy importante de la gestin de SQL

Server para asegurarse de que ejecuta copias de seguridad en un horario establecido. A menudo oigo hablar de bases de datos corruptos, infeccion por virus, etc...etc..., y ninguna copia de seguridad, as que vamos a echar un vistazo a otro mtodo de programar copias de seguridad utilizando las herramientas incluidas en el sistema operativo y SQL Server. Un problema con SQL Server 2005/2008 Express Edition es que no ofrece una manera de programar trabajos ya que no tienen incluido el SQL Agent, que es el que permite programar JOBS para ejecutar tareas de manera peridica en las Bases de Datos. Para ello existe una herramienta gratuita que permite crear tareas programadas para SQL Server que bsicamente realiza el backup va scripts sql y posteriormente su ejecucin se puede automatizar mediante el uso de archivos .bat y las tareas programadas de Windows. Dicha herramienta es SQLCMD.EXE, un archivo ejecutable que se encuentra, dependiendo de la version del SQL SERVER : Para SQL Express 2005 se encuentra en : C:\Program Files\Microsoft SQL Server\90\Tools\Binn\sqlcmd.exe Para SQL Express 2008 se encuentra en : C:\Program Files\Microsoft SQL Server\100\Tools\Binn\sqlcmd.exe Solucin: Hay dos componentes en esta, la primera es el comando de copia de seguridad y la segunda es la planificacin necesaria para ejecutar las copias de seguridad. En ese contexto vamos a analizar dos casos u opciones de las tantas que pueden realizarse, dicho sea de paso estas son las que mejores resultados me han dado en los diferentes SOS de algunas empresas a las que he tenido que auxiliar en el rescate y/o programacin de Backups de sus Bases de Datos en SQL Server. Manos a la obra: OPCION 1 : Desde la interfaz grfica del Management Studio podemos seguir los pasos para realizar el backup, pero justo antes de finalizar lo que hacemos es guardar el Script. Dentro del management studio colocamos la ruta donde deseamos guardar nuestro backup y seleccionamos las opciones que deseamos. Luego hacemos clic en el botn que nos permite generar el script, y seleccionamos la opcin " Script Action to New Query Windows " y guardamos el archivo o seleccionamos "Script Action to File".

Esto nos generar una salida de fichero del tipo "NombreScript.sql": BACKUP DATABASE [NombreBaseDatos] TO DISK = N'E:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\NombreBackup.bak' WITH NOFORMAT, NOINIT, NAME = N'NombreBaseDatos-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO Creamos un archivo .bat que es el que vamos a programar por medio del Programador de tareas o Task Scheduler. Dentro del archivo bat colocamos el siguiente comando: "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\sqlcmd.exe" -S SRVNAME\SQLEXPRESS -i C:\BBDD\MyScript.sql -o C:\BBDD\Restore.log Importante mantener las comillas (") dentro de la parte inicial del comando ya que como la ruta contiene un espacio es necesario definirlo de esta manera. SRVNAME se debe reemplazar por el nombre correspondiente del servidor, C:\BBDD\MyScript.sql debe ser la ruta donde se guard el script que realiza el backup y C:\BBDD\Restore.log debe ser la ruta donde se desea guardar el log de restauracin. Por ltimo se abre el Programador de Tareas o Task Scheduler, se crea una nueva tarea para ejecutar el bat y se definen las caractersticas de ejecucin.

OPCION 2 : Los comandos de copia de seguridad Hay algunas cosas que tenemos que configurar. La primera es la creacin de un script SQL al que llamaremos copiaseguridad.sql que nos permite generar el archivo de copia de seguridad y guardarlo en el directorio "D:\Backup". Esto se puede cambiar a cualquier carpeta que desee. USE <nombreBD>; GO declare @fecha varchar(MAX) declare @archivo varchar(MAX) set @fecha = CONVERT(Varchar(max),GETDATE(),102)+'_'+SUBSTRING(CONVERT(varchar(10),getdate(),1 08),1,2)+SUBSTRING(CONVERT(varchar(10), getdate(),108),4,2)+'horas' set @archivo ='D:\BACKUP\backup'+@fecha+'.bak' BACKUP DATABASE <nombreBD> TO DISK = @archivo WITH FORMAT, MEDIANAME = 'D_SQLServerBackups', NAME = 'Full Backup of <nombreBD>'; GO El script anterior generar un archivo conteniendo el backup completo (full) de la BD especificada as como la fecha y hora de su obtencin. Hay varias otras opciones y mejoras que se pueden hacer (...investigar mas opciones es la frase mgica que yo les sugerira). La segunda parte de esto es una tarea programada que ejecute un archivo con los comandos de SQLCMD para ejecutar los comandos de copia de seguridad anteriormente creados. Para crear y configurar una tarea programada ir a la ruta Accesorios -> Herramientas del sistema -> Tareas programadas o en el Panel de control. Lo primero que hay que hacer es hacer clic en "Agregar tarea programada"

y el siguiente asistente se ejecutar.

Click en siguiente, seleccione la aplicacin que desea ejecutar. Para nuestros propsitos, vamos a utilizar sqlcmd.exe. Para encontrar sqlcmd.exe tendr que hacer clic en el botn Examinar. Luego buscar el siguiente directorio "C:\Archivos de programa\Microsoft SQL Server\90\Tools\Binn" (dependiendo se se trata de SQL SRV 2005 o cambiar 90 por 100 en caso se trate de SQL SRV 2008, respectivamente)

Dar a la tarea programada un nombre y especificar cundo realizar la tarea (periodo de ejecucin).

Proporcione las credenciales (usuario y clave) para la cuenta bajo la cual se ejecutar esta tarea. Luego finalizar y guardar la tarea. Una de las cosas posteriores que se debe hacer es hacer clic en "Abrir propiedades avanzadas" para editar el comando.

A continuacin se muestra la pantalla de propiedades avanzadas y en el cuadro de texto "Run" ingresar el siguiente comando: sqlcmd -S nombre_servidor -E -i C:\Backup\backup.sql Esto se desglosa de la siguiente manera: sqlcmd (comando sqlcmd.exe) -S (especifica el \ nombre de instancia del servidor de SQL Server) serverName (este es el \ nombre de instancia del servidor de SQL Server) -E (esto le permite hacer una conexin de confianza) -I (esto especifica el archivo de comandos de entrada) C: \ Backup \ backup.sql (esta es la imagen que hemos creado anteriormente con los pasos de comando)