Backup Automático con SQL Server 2008 Express
El SQL 2008 Express no trae en forma nativa la utilidad de realizar backup automático, sin embargo podemos hacer el backup programando una tarea automática por medio del sistema operativo.
Lo primero que debemos hacer es crear una carpeta en donde se van a guardar las copias de seguridad por ejemplo en la unidad C: podemos crear la carpeta EDYDSI-Backup. Dentro de esta carpeta crear la carpeta Script. Luego en un block de notas o en el analizador de consulta pegar la secuencia de comandos que se encuentra más abajo(DESDE INICIO HASTA FIN). Guardar el archivo con extensión .sql en la carpeta Script con el nombre BackupDiario.sql. Si la carpeta en la que se va a hacer el backup no es C:\EDYDSI-Backup, cambiar por la ruta de acceso que corresponda.
--INICIO
--Parametros de Entrada
DECLARE @strDatabase varchar(200)
DECLARE @carpetaBackup varchar(500)
DECLARE @strNombreBackup VARCHAR(800)
DECLARE @strBackupFile VARCHAR(800)
--Seleccionar destino del Backup
SET @carpetaBackup = 'C:\EDYDSI-Backup'
--Se obtiene la fecha actual
DECLARE @fechaActual datetime
SET @fechaActual = GETDATE()
DECLARE BDs CURSOR FOR
SELECT RTRIM(bd)
FROM Macromaster.dbo.empresas
WHERE bd in
(
select name from sysdatabases
)
UNION
SELECT
'Macromaster'
OPEN BDs
FETCH NEXT FROM BDs
INTO @strDatabase
WHILE @@FETCH_STATUS = 0
BEGIN
SET @strNombreBackup = STR(DATEPART(YEAR, @fechaActual), 4, 0)
+ REPLACE(STR(DATEPART(MONTH, @fechaActual), 2, 0), N' ', N'0')
+ REPLACE(STR(DATEPART(DAY, @fechaActual), 2, 0), N' ', N'0')
+ REPLACE(STR(DATEPART(HOUR, @fechaActual), 2, 0), N' ', N'0')
+ REPLACE(STR(DATEPART(MINUTE, @fechaActual), 2, 0), N' ', N'0')
+ N'_' + N'db' + N'_' + @strDatabase
SET @strBackupFile = @carpetaBackup + N'\' + @strNombreBackup + N'.bak'
BACKUP DATABASE @strdatabase TO DISK = @strBackupFile WITH INIT
SET @strNombreBackup = ''
SET @strBackupFile = ''
FETCH NEXT FROM BDs
INTO @strDatabase
END
CLOSE BDs
DEALLOCATE BDs
--FIN
Seguidamente inicie el programador de tareas del sistema operativo en Inicio/Accesorio/Herramientas del Sistema/Programador de Tareas y siga los siguientes pasos:
Haga click en la opción crear tarea basica...
Asigne un nombre a la tarea
Seleccione la frecuencia con la que se va a ejecutar la tarea
Especifique la hora y fecha de inicio de la tarea
En la ventana de acción seleccione la opción Iniciar un programa
Haga click en el botón examinar y busque el ejecutable SQLCMD que se encuentra en C:\Program Files\Microsoft SQL Server\100\Tools\Binn
Guarde la tarea y a continuación en la ventana principal del programador de tareas haga doble click sobre Biblioteca de Programador de Tareas. Busque la tarea creada, haga click derecho y propiedades
En la pestaña acciones presione el botón Editar y escriba en el cuadro Programa o Script lo siguiente :
sqlcmd -S NombreServidor -E -i C:\EDYDSI-Backup\Script\BackupDiario.sql
Recuerde cambiar NombreServidor por el nombre del servidor con su instancia correspondiente por ejemplo: server\SQL2008. También tenga en cuenta que la ruta C:\EDYDSI-Backup\Script\BackupDiario.sql se incluye aqui porque se supone que el archivo se encuentra en dicha dirección.
Seguidamente presione aceptar y el asistente le preguntará si desea inluir los nuevos parámetros; presione Sí y cierre el asistente. De esta forma queda programada la tarea para realizar el backup diario de forma automática.