SQL Express no dispone de planes de mantenimiento, pero es relativamente sencillo configurar un script que realice las copias de seguridad automáticamente.
Los pasos para la automatización sin los siguientes:
1.- Generar el archivo con el script: P:\Backup.sql
El contenido del script está al final del artículo, y tan solo hay que modificar el nombre de la base de datos y la ruta.
2.- Generar el archivo: P:\CopiaSql.bat con el siguiente contenido:
sqlcmd -S AJ9-01-001-0001\SQLExpress -U sa -P miPassword -i "P:\Backup.sql"
Si además, queremos borrar las copias que tengan más de 7 días por ejemplo, añadiremos una segunda línea:
forfiles /P P:\A3\Copia\ /M *.* /D -7 -c "cmd /c del @path"
Es interesante además, añadir un XCOPY o ROBOCOPY que extraiga los archivos de copia del servidor:
xcopy P:\A3\Copia\*.bak N:\Backup\ /Y /S
3.- Generar una tarea programada que ejecute P:\CopiaSql.bat aunque no esté iniciada la sesión en el servidor
Eso es todo!!!
Contenido del archivo Backup.sql:
----------------------- -- BACKUP A3_STR ------------------------ DECLARE @strDBName nvarchar(50) DECLARE @strFolder nvarchar(500) DECLARE @tToday datetime DECLARE @strBackupName nvarchar(100) DECLARE @strBackupFile nvarchar(600) -- Nombre de la Base de Datos SET @strDBName = N'A3_STR' -- Directorio Destino de la copia de seguridad SET @strFolder = N'P:\A3\Copia' -- Componer nombre del archivo de copia de seguridad SET @tToday = GETDATE() SET @strBackupName = @strDBName + N' ' +STR(DATEPART(year, @tToday), 4, 0) +REPLACE(STR(DATEPART(month, @tToday), 2, 0), N' ',N'0') +REPLACE(STR(DATEPART(day, @tToday), 2, 0), N' ', N'0') +REPLACE(STR(DATEPART(hour, @tToday), 2, 0), N' ', N'0') +REPLACE(STR(DATEPART(minute, @tToday), 2, 0), N' ', N'0') SET @strBackupFile = @strFolder + N'\' + @strBackupName + N'.bak' BACKUP DATABASE @strDBName TO DISK = @strBackupFile WITH NOFORMAT, INIT, SKIP, NAME = @strBackupName