En 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.