Sqlcmd: ejecutar sentencias T-SQL en SqlServer desde la línea de comandos

Puede haber veces que no podamos trabajar con un entorno gráfico para ejecutar consultas en un SQLServer, que queramos ejecutar procesos por lotes (ficheros bat) con determinados procesos, o que, simplemente, nos apetezca usar la consola. En esos casos tenemos sqlcmd, una utilidad en línea de comandos para ejecutar sentencias T-SQL. Lo necesario para utilizar este herramienta es ver su ayuda:

Herramienta de l¡nea de comandos de Microsoft (R) SQL Server
Versi¢n 9.00.5000.00 NT INTEL X86
Copyright (c) Microsoft Corporation. Reservados todos los derechos.

Uso: Sqlcmd            [-U Id. de inicio de sesi¢n]          [-P contrasña]
  [-S servidor]            [-H nombre de host]          [-E conexión de confianza]
  [-d usar nombre de base de datos] [-l tiempo de espera de inicio de sesión]     [-t tiempo de espera de consulta]
  [-h encabezados]           [-s separador de columna]      [-w ancho de pantalla]
  [-a tama¤o de paquete]        [-e entrada de eco]        [-I habilitar identificadores entre comillas]
  [-c fin de comando]            [-L[c] listar servidores[salida limpia]]
  [-q "consulta de línea de comandos"]   [-Q "consulta de línea de comandos" y salir]
  [-m nivel de error]        [-V nivel de gravedad]     [-W quitar espacios finales]
  [-u salida Unicode]    [-r[0|1] mensajes a stderr]
  [-i archivo de entrada]         [-o archivo de salida]        [-z nueva contraseña]
  [-f <p ginaDeC¢digos> | i:<p ginaDeC¢digos>[,o:<p ginaDeC¢digos>]] [-Z nueva contrase¤a y salir]
  [-k[1|2] quitar[reemplazar] caracteres de control]
  [-y ancho de pantalla de longitud variable]
  [-Y ancho de pantalla de longitud fija]
  [-p[1] imprimir estad¡sticas[formato dos puntos]]
  [-R usar configuraci¢n regional de cliente]
  [-b anular por lotes si hay errores]
  [-v var = "valor"...]  [-A conexi¢n de administrador dedicada]
  [-X[1] deshabilitar comandos, secuencia de comandos de inicio, variables de entorno [y salir]]
  [-? mostrar resumen de sintaxis]

Conexión con autenticación de Windows a la “instancia” del servidor “host”

sqlcmd -S host\instancia 

Conexión con autenticación de Windows a la base de datos “BaseDeDatos” de la “instancia” del servidor “host”

sqlcmd -S host\instancia -d BaseDeDatos

Conexión con autenticación de SQLServer a la “instancia” del servidor “host” usando las credenciales usuario + clave

sqlcmd -U usuario -P clave -S host\instancia

Una vez conectados lo único que debemos recordar es que para ejecutar sentencias T-SQL que escribamos hemos de usar la sentencia GO. Veamos una ejemplo sencillo.

-- Conexión: 
sqlcmd -S host\sqlexpress
-- Establecemos la base de datos:
use database;
go
-- Ejecutamos una consulta:
select * from tabla;
go
nombre         apellido1         apellido2
---------------------------------------------------------------------
Antonio         Martinez         Luzco
Mirella         Abad             Nothing

(2 filas afectadas) 

Nos conectamos de nuevo y configuramos la conexión de modo que nos quite los espacios al final (opción -W), fijando el separador de columas ( -s “|”) y nos conecte a la base de datos “BaseDeDatos”:

sqlcmd -S hos\instancia -d BaseDeDatos -s "|" -W
-- Ejecutamos una consulta:
select * from tabla;
go
nombre|apellido1|apellido2
---------------------------------------------------------------------
Antonio|Martinez|Luzco
Mirella|Abad|Nothing

(2 filas afectadas)

Como veis es una herramienta sencilla pero pontente. Aquí os dejo más referencias sobre sqlcmd, Ciao

2 thoughts on “Sqlcmd: ejecutar sentencias T-SQL en SqlServer desde la línea de comandos”

  1. Estimado, una consulta, tengo unas estructuras que al final de cada fila tengo que dejar un espacio en blanco, cuando se genera del txt los espacios en blanco no los considera, tendras alguna recomendacion

  2. Muy bueno recién leo esto ya que tengo que hacer un trabajo de Base de Datos Sql, mi pregunta es como puedo pasar todo lo que escribo en sqlcmd a un bloc de notas y grabarlo como archivo.bat? La idea seria que al hacer doble click sobre el archivo.bat se ejecute loe generé desde sqlcmd.
    Muchas Gracias Jotge!

Leave a Reply

Your email address will not be published. Required fields are marked *