Backup automatico en SQL 2005 Express

Transcripción

Backup automatico en SQL 2005 Express
Backup automatico en SQL 2005 Express
La versión Express de SQL no dispone de ninguna herramienta para programar copias de seguridad
automatizadas. Aunque sí se pueden realizar cópias manualmente ya sea por la interfaz de SQL
Server Management Studio Express o por el comando de T-SQL backup database
Para poder mantener unas copias de un sistema SQL 2005 Express de forma automática podemos
crear un procedimiento que ejecute el comando de backup sobre cada una de las bases de datos
del sistema y guarde los archivos en el disco duro.
La creación del procedimiento de copia sería algo así:
USE [master]
GO
CREATE Proc [dbo].[spBackupsSQL] As
DECLARE @nombreBBDD varchar(255),
@nombreArchivoBackup varchar(255),
@comandoBorrado varchar(300),
@fecha varchar(255),
@existe int
EXEC sp_configure 'show advanced options',1
RECONFIGURE
EXEC sp_configure xp_cmdshell,1
RECONFIGURE
DECLARE miCursor CURSOR
FOR
select name from sys.databases where name <> 'tempbd'
OPEN miCursor
FETCH miCursor INTO @nombreBBDD
WHILE(@@FETCH_STATUS =
0)
BEGIN
SET @fecha = CONVERT(varchar(255),DATEPART(d,GETDATE()));
SET @fecha = @fecha +'_'+CONVERT(varchar(255),DATEPART(m,GETDATE()));
SET @fecha = @fecha +'_'+CONVERT(varchar(255),DATEPART(yyyy,GETDATE()));
SET @nombreArchivoBackup = 'C:\'+@nombreBBDD+'_'+@fecha+'.bak'
-- Miramos si existe el archivo
EXEC xp_fileexist @nombreArchivoBackup, @existe output
SET @comandoBorrado = 'del '+@nombreArchivoBackup
IF @existe = 1
EXEC xp_cmdshell @comandoBorrado
backup database @nombreBBDD to Disk=@nombreArchivoBackup
FETCH miCursor INTO @nombreBBDD
END
CLOSE miCursor
DEALLOCATE miCursor
EXEC sp_configure xp_cmdshell,0
RECONFIGURE
EXEC sp_configure 'show advanced options',0
RECONFIGURE
El código anterior crea un procedimiento almacenado que carga las bases de datos con la select de
la tabla sys.databases en un cursos que recorremos y vamos generando un archivo .bak de cada
una de las bases de datos.
Además, verificamos que no exista el archivo antes, en el caso de existir, elimina el archivo para
crear el nuevo. El proceso de borrado se realiza con el comando del y por ello activamos la
ejecución de comandos con sp_configure xp_cmdshell.
Automatización con .bat
Para poder decir que realmente hemos automatizado todo esto, nos hace falta que el
procedimiento se ejecute periodicamente, ya que por sí solo no es posible. Lo podemos realizar
con un archivo .bat, contendrá lo siguiente:
SQLCMD -q "Exec spBackupsServidorSQL" -Uusername -Ppassword -Sservername
Recuerda que spBackupsSQL es el nombre del procedimiento que queremos ejecutar.
Por último, con el programador de tareas de Windows ejecutamos el .bat