Como muchos ya sabréis SQL Server Express es una excelente opción gratuita para disponer de una base de datos que nos puede servir para la realización de proyectos de pequeño y mediano tamaño que no requieran de muchos requerimientos ya que esta solución está limitada a 1 GB de memoria y a un tamaño máximo por base de datos de 10 GB.
Otra de las limitaciones que tiene es la ausencia del agente SQL el cual nos permite ejecutar trabajos programados. En esta entrada voy a explicaros como podéis salvar este escollo y realizar copias de seguridad programadas en SQL Server Express.
Generación instrucciones T-SQL para realizar la copia de seguridad
Lo primero que necesitamos es crear los comandos T-SQL necesarios para poder realizar nuestra copia de seguridad. Lo más fácil es usar las herramientas integradas en Microsoft SQL Server Management Studio (MSSMS), por lo que lo abrimos, buscamos la base de datos de la que queremos hacer la copia de seguridad y con el botón derecho sobre ella seleccionamos Task-Backup.
A continuación tenemos que definir las características que tendrá nuestra copia. Esta configuración podéis hacerla a vuestro gusto aunque los parámetros más importantes son:
Definir la ruta donde queréis realizar el backup. Recordar al nombre del fichero añadirle el .bak final.
En Media Options es importante marcar el check «Verify backup when finished» para que una vez se realice la copia automáticamente se verifique y asegurarnos así de su robustez.
Realizada la configuración el siguiente paso es obtener el código T-SQL, para ello pulsamos en el botón Script que podemos encontrar en la parte superior.
Se nos abrirá una nueva ventana (la anterior donde hemos realizado la configuración podemos cerrarla) con el script necesario para llevar a cabo la copia por lo que lo guardamos (mediante el icono del disquete azul) ya que posteriormente lo utilizaremos.
Opcional: Copias de seguridad con una semana de retención
Con lo que os he explicado hasta ahora nuestra copia se sobrescribirá cada día por lo que si lo que queremos es hacer una copia de seguridad diaria de modo que podamos recuperar una copia concreta de los últimos 7 días simplemente editamos el script y realizamos los siguientes cambios:
Incluir lo siguiente al principio del script (1º línea)
DECLARE @rutadestino nvarchar(255) SET @rutadestino = 'C:\Backup\COPIA_' + CAST(DATEPART(weekday, GETDATE()) AS nvarchar(1)) + '.bak'
Sustituir en el script la ruta donde se almacena la copia de seguridad y la que se utiliza para realizar la verificación por la variable @rutadestino para que de esta forma nos cree copias de seguridad de este estilo: COPIA_1.bak, COPIA_2.bak, etc…
Creación fichero .bat para ejecutar la copia de seguridad
El siguiente paso es crear un fichero .bat que nos permitirá ejecutar el script T-SQL que salvamos en el paso anterior. Para ello usaremos la herramienta SQLCMD.exe incluida con nuestra instancia de SQL Server.
Debéis modificar los siguientes parámetros que os pongo en el ejemplo por vuestros datos:
- SERVIDOR\INSTANCIA: aquí debéis indicar los datos de vuestra instancia.
- Parámetro -i: ruta del script que salvamos con el código T-SQL.
- Ubicación log: ruta donde queréis que se guarde el fichero del log (ruta que aparece a continuación de >>).
C:\Program Files\Microsoft SQL Server\110\Tools\Binn\SQLCMD.exe" -S SERVIDOR\INSTANCIA -i "C:\Backup\BackupSQL.sql" >> "C:\Backup\LogBackup.txt"
Guardar el fichero recordando que debe tener como extensión .bat
Tarea programada
Un vez tenemos listo nuestro fichero .bat ya sólo nos queda programar la tarea que se encargará de ejecutar en la periodicidad que definamos nuestra copia.
Para ello abrimos el programador de tareas de Windows y creamos una nueva tarea. Lo único que tendremos que indicar, a parte de especificar que la tarea la ejecute un usuario de domino que tenga acceso a la instancia de SQL, es la periodicidad con la que queremos que se ejecute el trabajo así como indicar que ejecute el fichero .bat que hemos creado.
Y listo a partir de ahora nuestras copias de seguridad se ejecutarán de forma automática en la periodicidad que hemos definido.
Espero os haya sido de utilidad.
Entradas relacionadas
- Monitorizar SQL Server con Zabbix
- SQL Server: Habilitar xp_cmdshell
- SQL Server: Permitir conexiones remotas
Me dedico a la Administración de Sistemas y he creado este blog para compartir mis conocimientos con toda la comunidad y así aportar mi granito de arena y ayudar a todo el que lo necesite.