Archive for septiembre 2016

Backup & Restore con archivos.bat

septiembre 18, 2016

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

Backup SQL Server 2014 con archivos .bat

septiembre 7, 2016

Hace unos días, me preguntó un amigo si existía alguna forma de poder crear Backups de nuestras bases de datos de SQL Server 2014 de manera automática y luego de creado el backup obtener un archivo de formato plano con el resultado de la operación y que todo esto fuera realizado por medio de un archivo de extensión .bat.

Para poder lograr esto solo debemos seguir algunos sencillos pasos:

  • Abrir un bloc de notas: en este bloc de notas escribiremos el código necesario para convertirlo luego en un archivo de extensión .bat
  • Utilizar el SQLCMD para comunicarnos con el servidor de bases de datos.
  • Conocer el nombre del servidor y/o su dirección IP. En este ejemplo utilizaremos la dirección IP de nuestro SQL Server en lugar del nombre de instancia.

Código de ejemplo:

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

Explicación del código de ejemplo. Línea 1, SQLCMD:

Como comentamos un poco más arriba debemos utilizar el SQLCMD para conectarnos a nuestro servidor.

-S 192.168.2.120, 1433 : corresponde al nombre de nuestra instancia y su respectivo puerto de conexión. Podemos utilizar el nombre del servidor y la instancia directamente, pero es mejor utilizar la dirección IP de cada instancia para evitar confusiones y/o choques entre los servidores, el puerto utilizado por defecto es el 1433 sin embargo este puede cambiar según las necesidad y configuración que haya realizado nuestro DBA.

-U SQLBackup: Corresponde al usuario que tiene los privilegios de poder realizar copias de seguridad, creación y escritura dentro de nuestro SQL Server, el usuario puede ser «sa» o cualquier otro que hayamos creado con los privilegios necesarios, en este ejemplo nuestro usuario es SQLBackup.

-P QWEasd123*: Pertenece a la contraseña que utiliza nuestra usuario SQLBackup para conectarse al servidor.

Líneas 2 hasta la 4 pertenecen a una sola sentencia que ocupa una sola línea, la cual trataremos de explicar lo mejor posible:

-Q «BACKUP DATABASE: Estamos indicando una consulta directa sobre el servidor y estamos estableciendo que debe hacer un Backup de la base de datos AdventureWorks, este nombre lo cambiaremos por el que corresponda a la base de datos que vamos a respaldar.

TO DISK = 192…. Indicamos la dirección física en donde queremos alojar el backup y establecemos el nombre que tendrá el respaldo al finalizar, en este caso el nombre de nuestro respaldo será «esta.bak«.

WITH INIT: especifica que se deben sobrescribir todos los conjuntos de copia de seguridad, pero conservando el encabezado de los medios.

NAME: especificamos un nombre para identificar el backup que estamos realizando, en este ejemplo lo hemos identificado como «Backup Automatico de database».

STATS = 10: para mostrarnos el porcentaje completado desde el umbral para informarnos del próximo intervalo, es decir cada 10 porciento cubierto nos indicará el siguiente.

Línea 5, -o E:\esta\11.txt: indicamos el directorio y el nombre del archivo mas su extension en la cual almacenaremos la información de los resultados de la operación de respaldo.

Ahora para finalizar solo necesitaremos guardar nuestro archivo del bloc de notas con la extensión .bat, para ello vamos al menú archivo, guardar como, escribir el nombre que le daremos a nuestro archivo y no olvidar colocarle la extensión .bat, en tipo seleccionar todos los archivos y por último damos clic en el botón guardar.

backupbat-01

Ahora para ejecutar nuestro archivo .bat para crear nuestros backups solo debemos seleccionarlo con el botón derecho de nuestro mouse y ejecutarlo como administrador.

Con nuestro archivo se ejecutará con los privilegios de administrador y creará nuestro backup «esta.bak» en el directorio establecido.

Saludos!

Roberto Pozo