En el post anterior aprendimos a sacar un backup a una base de datos SQL Server 2019 que se encuentra en un contenedor de Docker, bueno, pues ahora vamos a aprender cómo restaurar el backup.

Precondiciones y asunciones

Este post ha sido construido con las siguientes precondiciones y asunciones:

  • El lector cuenta con una instancia de SQL Server 2019 en un contenedor de Docker.
    • Si no cuentas con una, ¡no te preocupes! puedes aprender hacerlo en este post, creado por mí, obvio.
  • El contenedor de Docker se encuentra alojado en una máquina con Windows 10 o superior.
  • Se tiene conocimiento de contraseña del usuario SA.
  • El lector cuenta con un backup con extensión .bak.

Empezamos

Primero vamos a definir unas cuantas variables para que la ejecución de los comandos clave sea más concreta, para ello abrimos PowerShell y realizamos lo siguiente:

Definir una variable llamada $CONTAINER_NAME para indicar el nombre del contenedor donde se encuentra la instancia de SQL Server 2019, en mi caso se llama infallible_colden, esto lo hacemos con el siguiente comando:

$CONTAINER_NAME = 'infallible_colden'

Cambia la parte resaltada por el nombre de tu contenedor.

Ahora, vamos a definir una variable llamada $DATABASE_NAME para indicar el nombre de la base de datos la cual queremos resturar, en mi caso, es GameLibrary:

$DATABASE_NAME = 'GameLibrary'

Cambia la parte resaltada por el nombre de tu base de datos.

Luego, definimos otra variable llamada $FILE_NAME para indicar cómo se llama el archivo con extensión .bak donde se encuentra el backup, en mi caso, pondré GameLibrary.bak:

$FILE_NAME = 'GameLibrary.bak'

Cambia la parte resaltada por el nombre de archivo con tu backup. ¡No olvides la extensión .bak!.

Esta última variable llamada $HOST_BACKUP_PATH es para indicar la ruta completa donde se encuentra nuestro backup (archivo .bak) en nuestra máquina local, en mi caso se encuentra en D:\backups\GameLibrary.bak:

$HOST_BACKUP_PATH = "D:\backups\GameLibrary.bak"

Cambia la parte resaltada por la ruta del archivo con tu backup.

Restaurar el backup

Ahora que contamos con todas las variables necesarias, ejecutaremos unos últimos comandos para restaurar el backup.

Primero crearemos una carpeta especial dentro de nuestro contenedor de Docker, donde el SQL Server podrá encontrar el backup más fácil:

docker exec "${CONTAINER_NAME}" mkdir -p /var/opt/mssql/restores

Ahora, copiaremos el backup dentro del contenedor de Docker en dicha carpeta así:

docker cp "${HOST_BACKUP_PATH}" "${CONTAINER_NAME}:/var/opt/mssql/restores/${FILE_NAME}"

Finalmente, restauremos el backup de una vez por todas con este comando:

docker exec -it "${CONTAINER_NAME}" /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -Q "RESTORE DATABASE [${DATABASE_NAME}] FROM DISK = N'/var/opt/mssql/restores/${FILE_NAME}' WITH FILE = 1, NOUNLOAD, REPLACE, RECOVERY, STATS = 5"

El comando te va a solicitar la contraseña para el usuario SA, por favor escríbela y dale Enter para continuar:

Ingresar contraseña de usuario SA para proceder con backup.

¡y listo!, puedes abrir tu gestor de bases de datos favoritos y comprobar que el backup se haya restaurado, validando que la base de datos GameLibrary se haya creado, que contenga tablas y datos 😉

Comprobando que la base de datos haya sido restaurada.

Y bueno, eso es todo por el momento, espero que te haya servido, nos vemos en otra ocasión 🙂

Enlaces de interés

Te invito a visitar los siguientes enlaces, gran parte de la información mostrada en este post ha sido recopilada de estas.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Lo siento, debo validar que eres un humano *Time limit exceeded. Please complete the captcha once again.