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
- sqlcmd Utility – http://msdn.microsoft.com/en-us/library/ms162773.aspx
- Lección 1: Iniciar sqlcmd – http://msdn.microsoft.com/es-es/library/ms166559.aspx
- SQLCMD Step-by-Step – http://databases.about.com/od/sqlserver/ss/sqlcmd.htm
- Using SQL Server 2005 sqlcmd Utility – http://www.databasejournal.com/features/mssql/article.php/3566401/Using-SQL-Server-2005-sqlcmd-Utility.htm
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
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!