Luego de haber publicado algún tiempo atrás, un código de como crear un backup por medio de un archivo .bat, me solicitaron si podia enseñar algún código que mostrara como, aparte de hacer un backup, poder realizar un restore de ese mismo backup pero en otro servidor.
Para ello utilizaremos el mismo código del artículo anterior para que sea mas comprensible todo, así que, sin más preámbulos comencemos:
1> SQLCMD -S 192.168.2.120,1433 -U SQLBackup -P QWEasd123* 2> -Q "BACKUP DATABASE AdventureWorks2012 3> TO DISK = '\\192.168.2.120\respaldos\esta.bak' WITH INIT, 4> NAME = N'Backup Automatico de database', STATS = 10" 5> -o E:\esta\11.txt
El código mostrado arriba es el código que utilizamos para hacer el backup así que no lo explicaremos acá ya que este ha sido explicado anteriormente.
Por ello, vamos a pasar al código que nos interesa para poder hacer el RESTORE en otro servidor:
1> SQLCMD -S 192.168.2.125,1433 -U SQLBackup -P QWEasd123* 2> -Q "RESTORE DATABASE Adventureworks2012 3> FROM DISK = '\\192.168.2.120\respaldos\esta.bak' 4> WITH MOVE 'AdventureWorks2012' 5> TO 'E:\esta\AdventureWorks2012.mdf', 6> MOVE 'AdventureWorks2012_log' 7> TO 'E:\esta\AdventureWorks2012.ldf', REPLACE, STATS = 10; " 8> -o E:\esta\22.txt
Este código al igual que el otro es bastante sencillo, solo debemos seguir los pasos establecidos y comprender lo que hace cada línea de código:
Línea 1: nos conectamos a nuestro servidor por medio de SQLCMD, establecemos la dirección IP de nuestro servidor al igual que el puerto de conexión que utiliza (Recordemos que el puerto de conexión por defecto es el 1433), luego por medio de -U establecemos quien es el usuario que se utiliza como usuario con privilegios de administración para crear la base de datos (en este ejemplo usamos al usuario SQLBackup), por último pero no menos importante con -P establecemos la contraseña del usuario SQLBackup para que pueda conectarse al servidor sin problemas.
-Q «RESTORE DATABASE: podemos fijarnos que esta línea comienza también con -Q pero en vez de ser «Backup» la sentencia es RESTORE, la cual va acompañada del nombre de la base de datos a restaurar.
FROM DISK: especifica el directorio desde el cual vamos a buscar el backup de la base de datos realizado en el primer código.
WITH MOVE: la instrucción MOVE hace que se restauren los datos y el archivo de registro en las ubicaciones especificadas en la línea 5 TO ‘E:\esta\.
MOVE ‘AdventureWorks2012_log’: indica que se debe retaurar el archivo de registro «.log» en el directorio especificado en la línea 7 de la misma manera en que lo indicamos en las líneas 4 y 5.
Línea 7: indicamos el directorio explicado en el punto anterior, utilizamos la sentencia REPLACE para indicar que se deben reemplazar los datos antiguos por los nuevos que estamos restaurando y por último utilizamos la sentencia STATS para que nos indiquen el porcentaje de ejecución cada 10% secuencialmente.
-o E:\esta\22.txt: al igual que en el código del artículo anterior, indicamos que se cree un archivo de texto plano llamado 22.txt, donde almacenaremos la información de la ejecución de nuestro RESTORE, ya sea correcta o si ha existido alguna falla, nos lo indique en dicho archivo.
Al finalizar de crear el archivo 22.txt nos deberá mostrar la información de esta manera:
10 percent processed. 21 percent processed. 30 percent processed. 40 percent processed. 51 percent processed. 60 percent processed. 71 percent processed. 80 percent processed. 90 percent processed. 100 percent processed. Processed 448 pages for database 'Adventureworks2012', file 'AdventureWorks2012' on file 1. Processed 2 pages for database 'Adventureworks2012', file 'AdventureWorks2012_log' on file 1. RESTORE DATABASE successfully processed 450 pages in 4.652 seconds (0.754 MB/sec).
Ahora; para que todo esto funcione, los dos fragmentos de código deberán estar dentro del mismo archivo con extensión .bat y ejecutarlo con privilegios de administrador.
Saludos!
Roberto Pozo