Uso de la línea de comandos en SQL Server II

logo_gpsEn el último post vimos como conectar a una instancia y posicionarse dentro de una BBDD. En este post vamos a ejecutar instrucciones en la BBDD desde un script o bien con una sentencia concreta, con la aplicación de línea de comandos de SQL Server, SQLCMD.

Hay parámetros específicos para realizar estas acciones una vez conectados a la instancia.

-d. Base de datos en la que se ejecutará el script.

-i. Script que se va a ejecutar

-o. Salida de la ejecución del script

-q. Si en vez de un script, se va a ejecutar una query.

Para ejecutar un script en la BBDD master:

SQLCMD -E -d master -i c:\Scripts\create_db.sql -o c:\output\log_create_db.rpt

Para ejecutar una query directamente en la BBDD master:

SQLCMD -E -d master -q “SELECT * FROM …”

Ejemplos:

Se va a ejecutar un script llamado query_db.sql que está en la unidad C:\ y va a devolver un log llamado log_query.rpt, y lo va a guardar también en la unidad C:\. El contenido del script que se va a ejecutar es:

--query_db.sql
 USE master
 GO
 select name from sys.sysdatabases
 GO

La ejecución es:

C:\>sqlcmd -S .\PRUEBASP3 -U sa -P gpsos$1234 -i c:\query_db.sql -o c:\log_query.rpt
C:\>

Esta ejecución devuelve el prompt a Sistema Operativo, y genera un fichero de salida en C:\ llamado log_query.rpt

C:\>dir
 El volumen de la unidad C no tiene etiqueta.
 El número de serie del volumen es: EA5A-4B9F
 
 Directorio de C:\
 
10/02/2017  09:46               877 log_query.rpt

10/02/2017  09:28                67 query_db.sql

09/02/2017  15:12    <DIR>          Windows
               3 archivos               18.630 bytes
               6 dirs   8.483.434.496 bytes libres

Y el contenido del fichero generado es:

 Changed database context to 'msdb'.
 Changed database context to 'master'.
 name
 ------------------------------------------
 master
 tempdb
 model
 msdb
  
 (4 rows affected)

Por otro lado, la ejecución de una sentencia directamente no devuelve el prompt al Sistema Operativo, si no que se queda dentro de la aplicación para seguir ejecutando.

C:\>sqlcmd -S .\PRUEBASP3 -d master -U sa -P gpsos$1234 -q "Select name from sys.sysdatabases"
name
---------------------------------------------------------
master
tempdb
model
msdb

(4 rows affected)
1>

Para encontrar la guía de usuario que proporciona Microsoft se puede visitar el siguiente enlace:

“Usar la utilidad sqlcmd”  —–  https://msdn.microsoft.com/es-es/library/ms180944.aspx

Esperamos os haya sido de utilidad.
Nos vemos en próximas entradas,

Equipo de Base de datos.