Página principal » cómo » Haga una copia de seguridad y restaure su base de datos de SQL Server desde la línea de comandos

    Haga una copia de seguridad y restaure su base de datos de SQL Server desde la línea de comandos

    La parte más importante de un plan de mantenimiento de SQL Server es hacer una copia de seguridad de sus 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, necesita crear un archivo de copia de seguridad real 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 fácilmente ejecutando el siguiente comando mientras está conectado como administrador de Windows:

    SqlCmd -E -S Server_Name -Q "BACKUP DATABASE [Name_of_Database] TO DISK =" X: PathToBackupLocation [Name_of_Database] .bak "”

    Los ejemplos a continuación ayudarán.

    Instancia predeterminada de SQL Server:

    SqlCmd -E -S MyServer -Q "BASE DE DATOS DE SEGURIDAD [MyDB] TO DISK =" D: BackupsMyDB.bak "”

    Instancia de SQL Server con nombre:

    SqlCmd -E -S MyServerMyInstance -Q “BACKUP DATABASE [MyDB] TO DISK =" D: BackupsMyDB.bak "”

    Lo anterior crea una copia de respaldo completamente restaurable de "MyDB" en el archivo "D: BackupsMyDB.bak" que puede usarse para la recuperación de desastres. Por supuesto, puede cambiar la ubicación de la copia de seguridad y el archivo a lo que necesite, pero asegúrese de especificar la ubicación de la carpeta que existe en la máquina local. Este archivo de copia de seguridad puede copiarse 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 respaldo en una unidad asignada o ubicación UNC?" Y la respuesta rápida es no. El motivo es que el servicio de Windows de SQL Server se ejecuta como una cuenta de usuario que solo tiene acceso a la máquina local. Podría cambiar la cuenta con la que se ejecuta el servicio, pero esto no se recomienda por razones de seguridad.

    Restaurando una copia de seguridad de la 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 "RESTORE DATABASE [Name_of_Database] FROM DISK =" X: PathToBackupFile [File_Name] .bak "”

    Por ejemplo:

    SqlCmd -E -S MyServer -Q "RESTORE DATABASE [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 la creación del archivo de copia de seguridad se perderá.

    Una cosa importante que se debe recordar cuando se usa el comando anterior es que está diseñado para usarse en el mismo servidor SQL en el que se creó el archivo de respaldo correspondiente. Los archivos de copia de seguridad de SQL almacenan información "detrás de escena" 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 SQL Server diferente, es posible que las ubicaciones de la ruta en el archivo de copia de seguridad no coincidan con el servidor que está restaurando y se producirá un error. Si bien esto puede solucionarse, es mucho más fácil restaurar las copias de seguridad creadas en otro servidor SQL utilizando la herramienta SQL Management Studio.

    Nota: los comandos anteriores funcionarán en SQL 2005 y versiones posteriores (cualquier edición). Para SQL 2000 y versiones anteriores, reemplace 'SqlCmd' con 'oSql'.