jueves, 18 de octubre de 2018

Como crear respaldos Diarios en SQL Express

Cuando instalamos SQL Server Express en nuestro servidor una de las primeras cosas que notamos ya que todo esta funcionando correctamente, es que no puedes calendarizar respaldos ni realizar una tarea de respaldos diaria desde el SQL Management, ¿Por qué? porque Microsoft así lo quiso, el dijo, quieres algo gratis? claro que si con mucho gusto pero no quieras que te regale herramientas útiles.

Entonces me di a la tarea de investigar un poco, y resulta que hay varios métodos para hacerlo, creando procedures, desde el cmd, etc.

Pues bueno no les voy a enseñar todas las maneras si no la mas sencilla.

Desde que instalamos el SQL server (cualquier edicion) nos instala herramientas que podemos utilizar desde el cmd, por ende, podemos crear un archivo bat que corra sentencias, por ende, podemos crear una tarea programada de Windows.

1. El primer paso es (de preferencia) crear una carpeta de Respaldos que puede ser "C:\Respaldos" o donde quieran y como quieran.
2. Ahí mismo (de preferencia) creamos un archivo .bat (eso no lo explicare ya que es demasiado obvio) le podemos llamar "Respaldos.bat".
3. Damos click derecho en el archivo y nos vamos en editar.

4. Acto seguido, pegamos el siguiente código y ajustamos los parámetros:
sqlcmd -S ".\SQLEXPRESS" -E -Q "declare @ruta as nvarchar(50); declare @fecha as nvarchar(50); set @fecha = CONVERT (nvarchar, CURRENT_TIMESTAMP, 112) set @ruta = 'C:\Respaldos\' + @fecha + 'BDEJEMPLO.bak' BACKUP DATABASE BDEJEMPLO TO DISK = @ruta WITH FORMAT;"

describo un poco que es lo que hace cada segmento:

sqlcmd (comando para ejecutar el sql desde cmd).
-S (parámetro para especificar el nombre de la instancia o del servidor de SQL, el .\ se escribe indicando que la instancia se encuentra en el servidor local)
-E (Especifica que es una conexión de confianza)
-Q (Especifica que ejecutara el query que se encuentra entre comillas)
declare @ruta as nvarchar(50); (declarar una variable llamada @ruta como caracter de 50 digitos)
declare @fecha as nvarchar(50); (declarar una variable llamada @fecha como caracter de 50 digitos)
set @fecha = CONVERT (nvarchar, CURRENT_TIMESTAMP,112) (la variable fecha se convierte en la fecha actual del sistema)
set @ruta = 'C:\Respaldos\' + @fecha + 'BDEJEMPLO.bak' (a la variable ruta guarda la información de la ruta donde queremos el respaldo concatenado con la fecha actual y el nombre de la base de datos seguido por el .bak)
BACKUP DATABASE BDEJEMPLO TO DISK = @ruta WITH FORMAT; (Realiza un respaldo de la base de datos BDEJEMPLO a disco y guárdalo con la información contenida en la variable @ruta)

Guardamos y si lo ejecutamos nos creara nuestro primer respaldo del a base de datos en la ruta especificada.

Ahora lo único que tenemos que hacer es crear una tarea de windows que la ejecute de manera automática en la hora y días especificados.

Espero les evite tantos dolores de cabeza, no olviden compartir para seguir subiendo temas.


No hay comentarios:

Publicar un comentario