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