Pages Menu
TwitterRss
Categories Menu

Posted by on 26-jul-2008 in Programación | 2 comments

Cómo hacer un backup de SQL Server fácil

SQL Server es una base de datos más que conocida, así que hay multitud de aplicaciones para hacer una copia de seguridad, incluyendo claro, las de la propia Microsoft.

De todas formas es posible hacer copias de seguridad sin contar con ninguna de esas herramientas gráficas y de forma sencilla y desatendida, de forma que se puedan programar de forma automática.

Lo que voy a comentar lo uso para bases de datos de prueba o en fases iniciales de producción ya que realiza una copia completa (no diferencial).

Objetivo: hacer una copia de seguridad diaria y sin intervención de administrador, que además esos ficheros se guarden en otro servidor diferente y que pueda conservar las copias antiguas para tener un historial y poder restaurar la base de datos días atrás por si hay un problema de programación.

Para conseguirlo:

  • Supongamos que la base de datos se llama… Dummy (original, ¿no?). Creamos en un fichero de texo .SQL con la sentencia que realiza el volcado de datos. El fichero lo llamo Dummybackup.sql y contiene lo siguiente:
BACKUP DATABASE [sea] TO  DISK = N'C:\Dummybackup.bak' WITH  DESCRIPTION = N'Copia de seguridad completa de Base de datos', NOFORMAT, NOINIT,  NAME = N'Dummybackup.bak', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO
declare @backupSetId as int
select @backupSetId = position from msdb..backupset where database_name=N'dummy' and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N'dummy' )
if @backupSetId is null begin raiserror(N'Error de comprobación. No se encuentra la información de copia de seguridad para la base de datos ''Dummy''.', 16, 1) end
RESTORE VERIFYONLY FROM  DISK = N'C:\Dummy_backup.bak' WITH  FILE = @backupSetId,  NOUNLOAD,  NOREWIND
GO
  • Creamos en el PC servidor un fichero .BAT con este contenido:
@ECHO OFF
sqlcmd -S SERVIDOR2003\SQLSRV -U adminBD -P adminClave -d Dummy -i Dummybackup.sql
copy Dummybackup.bak Z:\Dummybackup_%date:/=-%.bak
del Dummybackup.bak

En este fichero llamamos al interprete interactivo de sqlcmd de SQL Server, y le indicamos:

– Parámetro S: sobre qué servidor vamos a trabajar.

– Parámetro U: usuario

– Parámetro P: contraseña

– Parámetro d: base de datos

– Parámetro i: fichero con la sentencia/s SQL a ejecutar.

Depués copiamos el volcado a la unidad Z creando un fichero que contiene la fecha del día actual, de forma que conseguimos un historial de backups y al haber montado la unidad Z sobre otro servidor, además tenemos los datos en PC diferente. Por último borramos el fichero con el volcado “temporal”.

Eso es todo.

2 Comments

  1. como hago el backup manualmente osera no programando sino con el mouse

    • Si estás utilizando el Management Studio, puedes hacer clic con el botón derecho sobre la base de datos en el Explorador de objetos y en Tareas, seleccionar Copia de seguridad. Con esto puedes hacer la copia en un fichero en formato binario (que por defecto tiene extensión .BAK). Desde esta misma ventana puedes definir opciones sobre seguridad, caducidad de la copia, etc. Este es el mejor método si quieres un backup completo.

      Cuando alguna vez necesites importar/exportar tablas con otras bases de datos que no son SQL Server como MySQL, puedes hacer un backup (o recuperarlo) en formato texto de los datos. Para eso, utiliza el Asistente de importación y exporación (clic con el botón derecho en la base de datos -> Tareas -> Exportación). En el Asistente hay que tener cuidado a la hora de elegir la página de códigos y la configuración regional, ya que se podrían alterar las volcales acentuadas, eñes, etc., en general los caracteres propios del idioma.

      Espero que te sirva.

Gracias por dejarnos tu fantástico comentario