Saltar al contenido

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 comentarios

  1. Carlos Calderon Carlos Calderon

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

    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!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información básica sobre protección de datos Ver más

  • Responsable: Jorge Hoya.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio. El Titular ha contratado los servicios de alojamiento web a OVH que actúa como encargado de tratamiento.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Esta web utiliza cookies, puedes lees sobre ellas en la política de cookies    Ver política de cookies
Privacidad