La parte más importante de un plan de mantenimiento de SQL Server es realizar copias de seguridad de las bases de datos con regularidad. Para hacer una copia de seguridad de una base de datos, no puede simplemente copiar los respectivos archivos MDF y LDF de la base de datos, ya que SQL Server tiene un bloqueo en estos. En su lugar, debe crear un verdadero archivo de copia de seguridad a través de SQL Server.
Si bien esto se puede hacer desarrollando un plan de mantenimiento dentro de SQL Management Studio, las ediciones Express gratuitas de SQL Server no ofrecen esta interfaz. Para evitar esto, puede hacer una copia de seguridad de sus bases de datos ejecutando fácilmente el siguiente comando mientras está conectado como administrador de Windows:
SqlCmd -E -S Server_Name –Q “BASE DE DATOS DE COPIA DE SEGURIDAD [Name_of_Database] TO DISK=’X:PathToBackupLocation[Name_of_Database].bak'”
Los siguientes ejemplos ayudarán.
Instancia predeterminada de SQL Server:
SqlCmd -E -S MyServer –Q “BASE DE DATOS DE COPIA DE SEGURIDAD [MyDB] TO DISK=’D:BackupsMyDB.bak'”
Instancia de SQL Server con nombre:
SqlCmd -E -S MyServerMyInstance –Q “BASE DE DATOS DE COPIA DE SEGURIDAD [MyDB] TO DISK=’D:BackupsMyDB.bak'”
Lo anterior crea una copia de seguridad totalmente restaurable de “MyDB” en el archivo “D: BackupsMyDB.bak” que se puede usar para la recuperación ante desastres. Por supuesto, puede cambiar la ubicación y el archivo de la copia de seguridad a lo que necesite, pero asegúrese de especificar una ubicación de carpeta que exista en la máquina local. Este archivo de copia de seguridad se puede copiar en una unidad de cinta u otra ubicación de copia de seguridad externa.
Una pregunta común es “¿Se puede crear un archivo de copia de seguridad en una unidad asignada o ubicación UNC?” y la respuesta rápida es no. La razón es porque el servicio SQL Server windows se ejecuta como una cuenta de usuario que solo tiene acceso al equipo local. Puede cambiar la cuenta como se ejecuta el servicio, pero esto se desaconseja por razones de seguridad.
Restauración de una copia de seguridad de base de datos desde la línea de comandos
Para restaurar una base de datos desde un archivo de copia de seguridad, simplemente use el comando:
SqlCmd -E -S Server_Name –Q “RESTAURAR BASE DE DATOS [Name_of_Database] FROM DISK=’X:PathToBackupFile[File_Name].bak'”
Por ejemplo:
SqlCmd -E -S MyServer –Q “RESTAURAR BASE DE DATOS [MyDB] FROM DISK=’D:BackupsMyDB.bak'”
El comando anterior restaurará una copia de seguridad de “MyDB” a partir de los datos almacenados en el archivo de copia de seguridad “D:BackupsMyDB.bak”. Cualquier cambio realizado en MyDB desde que se creó el archivo de copia de seguridad se perderá.
Una cosa importante que debe recordar al usar el comando anterior es que está destinado a usarse en el mismo SQL Server en el que se creó el archivo de copia de seguridad respectivo. Los archivos de copia de seguridad de SQL almacenan información “entre bastidores” que controla dónde y cómo se copian los archivos de datos en el archivo de copia de seguridad. Si está restaurando una copia de seguridad desde un servidor SQL Server diferente, es posible que las ubicaciones de ruta de acceso en el archivo de copia de seguridad no coincidan con el servidor en el que está restaurando y se producirá un error. Si bien esto se puede evitar, es mucho más fácil restaurar las copias de seguridad creadas en otro servidor SQL Server mediante la herramienta SQL Management Studio.
Nota: los comandos anteriores funcionarán en SQL 2005 y superior (cualquier edición). Para SQL 2000 y anteriores, reemplace ‘SqlCmd’ por ‘oSql’.