SQLCMD
SQLCMD
SQLCMD
La utilidad sqlcmd permite escribir instrucciones Transact-SQL , procedimientos del sistema y archivos de script en el smbolo del sistema, en el Editor de consultas en modo SQLCMD, en un archivo de script de Windows o en un paso de trabajo del sistema operativo (Cmd.exe) de un trabajo del Agente de SQL Server. Esta utilidad usa ODBC para ejecutar lotes de Transact-SQL.
Importante SQL Server Management Studio usa Microsoft .NET Framework SqlClient para la ejecucin en modo normal y SQLCMD en el Editor de consultas. Cuando sqlcmd se ejecuta desde la lnea de comandos, sqlcmd usa el controlador ODBC. Dado que se pueden aplicar diferentes opciones predeterminadas, podra obtener un comportamiento diferente al ejecutar la misma consulta en el modo SQLCMD de SQL Server Management Studio y en la utilidad sqlcmd.
Actualmente, sqlcmd no requiere un espacio entre la opcin de lnea de comandos y el valor. Sin embargo, en versiones futuras, se puede requerir un espacio entre la opcin de lnea de comandos y el valor.
Sintaxis
sqlcmd -a packet_size -A (dedicated administrator connection) -b (terminate batch job if there is an error) -c batch_terminator -C (trust the server certificate) -d db_name -e (echo input) -E (use trusted connection) -f codepage | i:codepage[,o:codepage] | o:codepage[,i:codepage] -h rows_per_header -H workstation_name -i input_file -I (enable quoted identifiers) -k[1 | 2] (remove or replace control characters) -K application_intent -l login_timeout -L[c] (list servers, optional clean output) -m error_level -M multisubnet_failover -N (encrypt connection) -o output_file -p[1] (print statistics, optional colon format) -P password -q "cmdline query" -Q "cmdline query" (and exit)
-r[0 | 1] (msgs to stderr) -R (use client regional settings) -s col_separator -S [protocol:]server[\instance_name][,port] -t query_timeout -u (unicode output file) -U login_id -v var = "value" -V error_severity_level -w column_width -W (remove trailing spaces) -x (disable variable substitution) -X[1] (disable commands, startup script, environment variables and optional exit) -y variable_length_type_display_width -Y fixed_length_type_display_width -z new_password -Z new_password (and exit) -? (usage)
La opcin -E omite la posible configuracin de la variable de entorno de nombre de usuario y contrasea, como SQLCMDPASSWORD. Si se usa la opcin -E junto con la opcin -U o -P, se genera un mensaje de error. -H workstation_name Un nombre de estacin de trabajo. Esta opcin establece la variable de scripting de sqlcmdSQLCMDWORKSTATION. El nombre de la estacin de trabajo se muestra en la columna hostname de la vista de catlogo sys.processes y se puede devolver mediante el procedimiento almacenado sp_who. Si no se especifica esta opcin, el nombre actual del equipo es el valor predeterminado. Este nombre se puede usar para identificar diferentes sesiones de sqlcmd. -K application_intent Declara el tipo de carga de trabajo de la aplicacin al conectarse a un servidor. El nico valor actualmente admitido es de solo lectura. Si no se especifica -K, la utilidad sqlcmd no admitir la conectividad con una rplica secundaria en un grupo de disponibilidad AlwaysOn. Para obtener ms informacin, veaSecundarias activas: rplicas secundarias legibles (grupos de disponibilidad AlwaysOn). -M multisubnet_failover Especifique siempre -M al conectarse a un agente de escucha de un grupo de disponibilidad de SQL Server 2012 o a una instancia de clster de conmutacin por error de SQL Server 2012. -M proporciona una deteccin ms rpida del servidor activo (actualmente) y una conexin al mismo. Si no se especifica M, -M est desactivado. Para obtener ms informacin acerca de Grupos de disponibilidad AlwaysOn, veaAgentes de escucha del grupo de disponibilidad, conectividad de cliente y conmutacin por error de una aplicacin (SQL Server), Creacin y configuracin de grupos de disponibilidad (SQL Server), Clster de conmutacin por error y grupos de disponibilidad de AlwaysOn (SQL Server) y Secundarias activas: rplicas secundarias legibles (grupos de disponibilidad AlwaysOn). -N Este modificador lo usa el cliente para solicitar una conexin cifrada. -P password Es una contrasea especificada por el usuario. En las contraseas se distingue entre maysculas y minsculas. Si se usa la opcin -U y no la opcin -P, y adems no se ha establecido la variable de entorno SQLCMDPASSWORD, sqlcmd solicita al usuario una contrasea. Si se usa la opcin -P al final del smbolo del sistema sin especificar ninguna contrasea, sqlcmd usa la contrasea predeterminada (NULL).
Nota de seguridad No utilice una contrasea en blanco. Utilice una contrasea segura. Para obtener ms informacin, veaContraseas seguras.
El mensaje de contrasea se muestra en la consola de la siguiente manera: Password: La entrada del usuario queda oculta. Esto significa que no se muestra nada y que el cursor permanece en su posicin. La variable de entorno SQLCMDPASSWORD permite establecer una contrasea predeterminada para la sesin actual. Por lo tanto, las contraseas no tienen que estar codificadas de forma rgida en los archivos por lotes. En el siguiente ejemplo primero se establece la variable SQLCMDPASSWORD en el smbolo del sistema y, despus, se obtiene acceso a la utilidad sqlcmd. En el smbolo del sistema, escriba: SET SQLCMDPASSWORD= p@a$$w0rd
Nota de seguridad La contrasea ser visible para cualquiera que pueda ver el monitor del equipo.
En el siguiente smbolo del sistema, escriba: sqlcmd Si la combinacin de nombre de usuario y contrasea no es correcta, se genera un mensaje de error.
Nota La variable de entorno OSQLPASSWORD se ha conservado por motivos de compatibilidad. La variable de entorno SQLCMDPASSWORD tiene prioridad sobre la variable de entorno OSQLPASSWORD; esto significa que sqlcmd y osql se pueden usar una junto a la otra sin interferencias y que los scripts anteriores seguirn funcionando.
Si se usa la opcin -P junto con la opcin -E, se genera un mensaje de error. Si la opcin -P va seguida de ms de un argumento, se genera un mensaje de error y el programa se cierra. -S [protocol:]server[\instance_name][,port] Especifica la instancia de SQL Server a la que hay que conectarse. Establece la variable de scripting desqlcmd SQLCMDSERVER. Especifique server_name para conectarse a la instancia predeterminada de SQL Server en ese equipo servidor. Especifique server_name [ \instance_name ] para conectarse a una instancia con nombre de SQL Server en ese equipo servidor. Si no se especifica ningn equipo, sqlcmd se conecta a la instancia predeterminada de SQL Server en el equipo local. Esta opcin es necesaria si se ejecuta sqlcmd desde un equipo remoto conectado a la red. protocol puede ser tcp (TCP/IP), lpc (memoria compartida) o np (canalizaciones con nombre). Si no especifica server_name [ \instance_name ] al iniciar sqlcmd, SQL Server comprueba si existe la variable de entorno SQLCMDSERVER y la usa.
Nota La variable de entorno OSQLSERVER se ha conservado por motivos de compatibilidad. La variable de entorno SQLCMDSERVER tiene prioridad sobre la variable de entorno OSQLSERVER; esto significa quesqlcmd y osql se pueden usar una junto a la otra sin interferencias y que los scripts anteriores seguirn funcionando.
-U login_id Es el identificador de inicio de sesin del usuario.
Nota La variable de entorno OSQLUSER est disponible por motivos de compatibilidad con versiones anteriores. La variable de entorno SQLCMDUSER tiene prioridad sobre OSQLUSER. Esto significa quesqlcmd y osql se pueden usar una junto a la otra sin
de sqlcmd en el mismo archivo. El archivo de salida estar daado o ser incorrecto. Vea el modificador -f para obtener ms informacin acerca de los formatos de archivo. Este archivo se crear si no existe. Se sobrescribir cualquier archivo con el mismo nombre que pertenezca a una sesin de sqlcmd anterior. El archivo que se especifica aqu no es el archivo stdout. Si se especifica un archivo stdout, este archivo no se usar. Ejemplos de rutas de acceso: -o C:\< nombreDeArchivo> -o \\<Servidor>\<RecursoCompartido$>\<nombreDeArchivo> -o "C:\Una carpeta\<nombreDeArchivo>" Las rutas de acceso a archivos que contengan espacios deben escribirse entre comillas. -r[0 | 1] Redirige la salida del mensaje de error a la pantalla (stderr). Si no especifica ningn parmetro o si especifica 0, solo se redirigirn los mensajes de error con un nivel de gravedad 11 o superior. Si especifica1, toda salida de mensaje, incluida PRINT, se redirigir. No surte efecto si se usa -o. De forma predeterminada, los mensajes se envan a stdout. -R Hace que sqlcmd localice las columnas numericas, de moneda, fecha y hora recuperadas de SQL Server basndose en la configuracin regional del cliente. De forma predeterminada, estas columnas se muestran con la configuracin regional del servidor. -u Especifica que output_file se almacena en formato Unicode, independientemente del formato de input_file. Opciones de ejecucin de consultas -e Escribe scripts de entrada en el dispositivo de salida estndar (stdout). -I Activa (establece en ON) la opcin de conexin SET QUOTED_IDENTIFIER. De forma predeterminada, la opcin est establecida en OFF. Para obtener ms informacin, vea SET QUOTED_IDENTIFIER (Transact-SQL). -q " cmdline query " Ejecuta una consulta cuando se inicia sqlcmd, pero no cierra sqlcmd cuando finaliza la consulta. Se pueden ejecutar varias consultas delimitadas por punto y coma. Utilice las comillas alrededor de la consulta, como se muestra en el siguiente ejemplo. En el smbolo del sistema, escriba: sqlcmd -d AdventureWorks2012 -q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';" sqlcmd -d AdventureWorks2012 -q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
En el smbolo del sistema, escriba: sqlcmd -d AdventureWorks2012 -Q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';" sqlcmd -d AdventureWorks2012 -Q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
Nota El tiempo de espera real puede variar unos segundos con respecto al valor de time_out especificado.
-v var = value[ var = value...] Crea una variable de scripting de sqlcmdque se puede usar en un script de sqlcmd. Si el valor contiene espacios en blanco, especifquelo entre comillas. Puede especificar varios valores var="values". Si hay errores en alguno de los valores especificados, sqlcmd genera un mensaje de error y despus se cierra. sqlcmd -v MyVar1=something MyVar2="some thing" sqlcmd -v MyVar1=something -v MyVar2="some thing" -x Hace que sqlcmd omita las variables de scripting. Es til cuando un script contiene muchas instrucciones INSERT que pueden contener cadenas con el mismo formato que las variables normales, por ejemplo, $(variable_name). Opciones de formato -h headers Especifica el nmero de filas que se van a imprimir entre los encabezados de las columnas. El valor predeterminado es imprimir los encabezados una vez para cada conjunto de resultados de la consulta.Esta opcin establece la variable de scripting de sqlcmd SQLCMDHEADERS. Use -1 para especificar que no desea imprimir los encabezados. Cualquier valor no vlido har que sqlcmd genere un mensaje de error y se cierre. -k [1 | 2] Quita todos los caracteres de control, como tabulaciones y nuevos caracteres de lnea de la salida. De este modo se conserva el formato de las columnas cuando se devuelven datos. Si se especifica 1, los caracteres de control se reemplazan con un solo espacio. Si se especifica 2, los caracteres de control consecutivos se reemplazan por un solo espacio. -k equivale a -k1. -s col_separator
Especifica el carcter separador de columnas. El valor predeterminado es un espacio en blanco. Esta opcin establece la variable de scripting de sqlcmd SQLCMDCOLSEP. Para usar caracteres que tienen un significado especial para el sistema operativo, como la y comercial (&) o el punto y coma (;), incluya el carcter entre comillas ("). El separador de columnas puede ser cualquier carcter de 8 bits. -w column_width Especifica el ancho de pantalla para la salida. Esta opcin establece la variable de scripting de sqlcmdSQLCMDCOLWIDTH. El ancho de columna debe ser un nmero mayor que 8 y menor que 65536. Si el ancho de columna especificado no est en ese intervalo, sqlcmd generar un mensaje de error. El ancho predeterminado es 80 caracteres. Cuando la lnea de salida supera el ancho de columna especificado, se ajusta a la siguiente lnea. -W Esta opcin quita los espacios finales de una columna. Use esta opcin junto con la opcin -s cuando prepare datos que se vayan a exportar a otra aplicacin. No se puede usar con las opciones -y ni -Y. -y variable_length_type_display_width Establece la variable de scripting de sqlcmd SQLCMDMAXFIXEDTYPEWIDTH. El valor predeterminado es 256. Limita el nmero de caracteres que se devuelve para tipos de datos de longitud variable y gran tamao: varchar(max) nvarchar(max) varbinary(max) xml UDT (user-defined data types) text ntext image
Nota Los UDT pueden ser de longitud fija, en funcin de la implementacin. Si esta longitud de un UDT de longitud fija es ms corta que display_width, el valor del UDT devuelto no se ve afectado. No obstante, si la longitud es mayor que display_width, la salida queda truncada.
Si display_width es 0, la salida queda truncada en 1 MB.
Importante Use la opcin -y 0 con mucha precaucin, ya que puede causar graves problemas de rendimiento en el servidor y en la red, segn el tamao de los datos devueltos.
-Y fixed_length_type_display_width Establece la variable de scripting de sqlcmd SQLCMDMAXVARTYPEWIDTH. El valor predeterminado es 0 (ilimitado). Limita el nmero de caracteres que se devuelve para los siguientes tipos de datos: char( n ) , donde 1<=n<=8000 nchar(n n ) , donde 1<=n<=4000 varchar(n n ) , donde 1<=n<=8000 nvarchar(n n ) , donde 1<=n<=4000
varbinary(n n ) , donde 1<=n<=4000 variant Opciones de informes de errores -b Especifica que sqlcmd se cierre y devuelva un valor de DOS ERRORLEVEL cuando se produce un error. El valor que se devuelve a la variable DOS ERRORLEVEL es 1 cuando el mensaje de error de SQL Server tiene un nivel de gravedad superior a 10; de lo contrario, el valor devuelto es 0. Si se ha establecido la opcin -V adems de b, sqlcmd no notificar un error si el nivel de gravedad es inferior a los valores establecidos mediante -V. Los archivos por lotes del smbolo del sistema pueden probar el valor de ERRORLEVEL y controlar el error apropiadamente. sqlcmd no notifica los mensajes de error con un nivel de gravedad de 10 (mensajes informativos). Si el script de sqlcmd contiene un comentario incorrecto, un error de sintaxis o carece de una variable de scripting, el valor de ERRORLEVEL devuelto es 1. -m error_level Controla qu mensajes de error se envan a stdout. Se envan los mensajes que tienen un nivel de gravedad mayor o igual que este nivel. Cuando este valor se establece en -1, se envan todos los mensajes, incluidos los informativos. No se permiten espacios entre -m y -1. Por ejemplo, -m-1 es vlido, pero -m-1no lo es. Esta opcin tambin establece la variable de scripting de sqlcmd SQLCMDERRORLEVEL. El valor predeterminado de esta variable es 0. -V error_severity_level Controla el nivel de gravedad que se usa para establecer la variable ERRORLEVEL. Los mensajes de error que tienen niveles de gravedad mayores o iguales que este valor establecen ERRORLEVEL. Los valores menores que 0 se notifican como 0. Los archivos CMD y por lotes se pueden usar para probar el valor de la variable ERRORLEVEL. Otras opciones -a packet_size Solicita un paquete de un tamao diferente. Esta opcin establece la variable de scripting de sqlcmdSQLCMDPACKETSIZE. packet_size debe ser un valor entre 512 y 32767. El valor predeterminado es 4096. Un tamao de paquete mayor puede mejorar el rendimiento de la ejecucin de scripts que comprenden gran cantidad de instrucciones de SQL entre los comandos GO. Puede solicitar un tamao de paquete mayor.No obstante, si se deniega la solicitud, sqlcmd usa el valor predeterminado de servidor para el tamao de paquete. -c batch_terminator Especifica el terminador del lote. De forma predeterminada, los comandos se terminan y se envan a SQL Server escribiendo la palabra "GO" en una lnea aparte. Cuando restablezca el terminador del lote, no use palabras reservadas de Transact-SQL ni caracteres especiales que tengan un significado especial para el sistema operativo, incluso aunque vayan precedidos de una barra diagonal invertida. -L[c] Enumera los equipos servidores configurados localmente y los nombres de los equipos servidores que difunden en la red. Este parmetro no se puede usar en combinacin con otros parmetros. El nmero mximo de equipos de servidor que se puede enumerar es 3000. Si la lista de servidor se trunca debido al tamao del bfer, aparece un mensaje de advertencia.
Nota
Debido a la naturaleza de las difusiones en las redes, sqlcmd podra no recibir una respuesta de todos los servidores a tiempo. Por lo tanto, la lista de servidores devuelta puede variar en cada invocacin de esta opcin.
Si se especifica el parmetro opcional c, la salida aparece sin lo servidores: la lnea de encabezado y cada lnea de servidor se muestra sin espacios iniciales. Esto se denomina salida limpia. La salida limpia mejora el rendimiento del procesamiento de los lenguajes de scripting. -p[1] Imprime estadsticas de rendimiento para cada conjunto de resultados. A continuacin se muestra un ejemplo del formato para las estadsticas de rendimiento: Network packet size (bytes): n x xact[s]: Clock Time (ms.): total t1 avg t2 (t3 xacts per sec.) Donde: x indica el nmero de transacciones que procesa SQL Server. t1 indica el tiempo total de todas las transacciones. t2 indica el tiempo medio de una nica transaccin. t3 indica el nmero medio de transacciones por segundo. Todos los tiempos se indican en milisegundos. Si se especifica el parmetro opcional 1, el formato de salida de las estadsticas es el separado por dos puntos, que se puede importar fcilmente en una hoja de clculo o se puede procesar en un script. Si el parmetro opcional tiene cualquier valor distinto de 1, se genera un error y sqlcmd se cierra. -X[1] Deshabilita los comandos que pueden poner en peligro la seguridad del sistema cuando se ejecutasqlcmd desde un archivo por lotes. Los comandos deshabilitados se siguen reconociendo; sqlcmd emite un mensaje de advertencia y sigue ejecutndose. Si se especifica el parmetro opcional 1, sqlcmd genera un mensaje de error y despus se cierra. Los siguientes comandos se deshabilitan cuando se usa la opcin-X: ED !! command Si se especifica la opcin -X, eso evita que se pasen variables de entorno a sqlcmd. Tambin impide que el script de inicio especificada mediante la variable de scripting SQLCMDINI se ejecute. Para obtener ms informacin acerca de las variables de scripting de sqlcmd, vea Usar sqlcmd con variables de script. -? Muestra el resumen de la sintaxis de las opciones de sqlcmd.
Comentarios
Las opciones no tienen que utilizarse forzosamente en el orden mostrado en la seccin de sintaxis. Cuando se devuelven varios resultados, sqlcmd imprime una lnea en blanco entre cada conjunto de resultados de un lote. Adems, el mensaje "<x> filas afectadas" no aparece cuando no se aplica a la instruccin ejecutada. Para usar sqlcmd de forma interactiva, escriba sqlcmd en el smbolo del sistema con una o varias de las opciones descritas anteriormente en este tema. Para obtener ms informacin, vea Usar la utilidad sqlcmd.
Nota Las opciones -L, -Q, -Z o -i hacen que sqlcmd se cierre despus de la ejecucin.
La longitud total de la lnea de comandos de sqlcmd en el entorno de comandos (Cmd.exe), incluidos todos los argumentos y las variables expandidas, es la que determine el sistema operativo para Cmd.exe.
Nota Para ver las variables de entorno, en el Panel de control, abra Sistema y haga clic en la pestaa Opciones avanzadas.
-h -s -w
-a -m -y -Y
SQLCMDUSER, SQLCMDPASSWORD y SQLCMDSERVER se establecen cuando se usa :Connect . L indica que el valor solo puede establecerse una vez durante la inicializacin del programa. L/E indica que el valor puede modificarse mediante el comando setvar y que los comandos siguientes se vern influidos por el nuevo valor.
Comandos de sqlcmd
Adems de las instrucciones Transact-SQL de sqlcmd, tambin estn disponibles los siguientes comandos:
GO [recuento] [:] RESET [:] ED [:] !! [:] QUIT [:] EXIT :r :ServerList :Setvar
:List :Error :Out :Perftrace :Connect :On Error :Help :XML [ON | OFF] :Listvar
Tenga en cuenta lo siguiente cuando use comandos de sqlcmd: Todos los comandos de sqlcmd, excepto GO, deben ir precedidos de dos puntos (:).
Importante Para mantener la compatibilidad con los scripts de osql existentes, algunos de los comandos se reconocern sin los dos puntos. Esto est indicado por [:].
Los comandos de sqlcmd se reconocen solo si aparecen al principio de una lnea.
Los comandos de sqlcmd no distinguen entre maysculas y minsculas. Cada comando debe estar en una lnea separada. Un comando no puede ir seguido de una instruccin de Transact-SQL o de otro comando. Los comandos se ejecutan inmediatamente. No se colocan en el bfer de ejecucin, como es el caso de las instrucciones Transact-SQL. Editar comandos [:] ED Inicia el editor de texto. Este editor se puede utilizar para editar el lote actual de Transact-SQL o el ltimo lote ejecutado. Para editar el ltimo lote ejecutado, el comando ED debe escribirse inmediatamente despus de que se complete la ejecucin del ltimo lote. El editor de texto se define mediante la variable de entorno SQLCMDEDITOR. El editor predeterminado es "Edit". Para cambiar el editor, establezca la variable de entorno SQLCMDEDITOR. Por ejemplo, para establecer el editor en el Bloc de notas de Microsoft, en el smbolo del sistema, escriba: SET SQLCMDEDITOR=notepad [:] RESET Borra la cach de instrucciones. :List Imprime el contenido de la memoria cach de instrucciones. Variables :Setvar <var> [ "value" ] Define las variables de scripting de sqlcmd. Las variables de scripting tienen el siguiente formato:$(VARNAME). Los nombres de variables no distinguen entre maysculas y minsculas. Las variables de scripting pueden establecerse de los siguientes modos: Implcitamente mediante una opcin de lnea de comandos. Por ejemplo, la opcin -l establece la variable de sqlcmd SQLCMDLOGINTIMEOUT. Explcitamente mediante el comando :Setvar. Al definir una variable de entorno antes de ejecutar sqlcmd.
Nota Solo se mostrarn las variables de scripting establecidas mediante sqlcmd y las variables establecidas con el comando :Setvar.
Comandos de salida :Error < filename >| STDERR|STDOUT Redirige toda la salida de error al archivo especificado por file name, a stderr o a stdout. El comandoError puede aparecer varias veces en un script. De forma predeterminada, la salida de error se enva astderr. file name Crea y abre un archivo que recibir la salida. Si el archivo ya existe, se truncar en cero bytes. Si el archivo no est disponible a causa de los permisos u otros motivos, la salida no se cambiar y se enviar al ltimo destino especificado o al predeterminado. STDERR Cambia la salida del error al flujo stderr. Si se ha redirigido, el destino al cual se redirige el flujo recibir la salida del error. STDOUT Cambia la salida del error al flujo stdout. Si se ha redirigido, el destino al cual se redirige el flujo recibir la salida del error. :Out < filename >| STDERR| STDOUT Crea y redirige todos los resultados de consulta al archivo especificado por file name, a stderr o a stdout.De forma predeterminada, la salida se enva a stdout. Si el archivo ya existe, se truncar en cero bytes. El comando Out puede aparecer varias veces en un script. :Perftrace < filename >| STDERR| STDOUT Crea y redirige toda la informacin de seguimiento de rendimiento al archivo especificado por file name, astderr o a stdout. De forma predeterminada, la salida de seguimiento de rendimiento se enva a stdout. Si el archivo ya existe, se truncar en cero bytes. El comando Perftrace puede aparecer varias veces en un script. Comandos de control de ejecucin :On Error[ exit | ignore] Establece la accin que se llevar a cabo cuando se produzca un error durante la ejecucin del script o del lote. Cuando se usa la opcin exit, sqlcmd se cierra con el valor de error correspondiente. Cuando se usa la opcin ignore, sqlcmd pasa por alto el error y contina con la ejecucin del lote o del script. De forma predeterminada, se imprimir un mensaje de error. [:] QUIT Hace que sqlcmd se cierre. [:] EXIT[ (statement) ] Permite usar el resultado de una instruccin SELECT como valor devuelto de sqlcmd. Si es numrica, la primera columna de la ltima fila del resultado se convierte en un entero de 4 bytes (long). MS-DOS pasa el byte bajo al proceso primario o al nivel de errores del sistema operativo. Windows 200x pasa el entero de 4 bytes completo. La sintaxis es: :EXIT(query) Por ejemplo: :EXIT(SELECT @@ROWCOUNT) Tambin puede incluir el parmetro EXIT como parte de un archivo por lotes. Por ejemplo, en el smbolo del sistema, escriba: sqlcmd -Q "EXIT(SELECT COUNT(*) FROM '%1')" La utilidad sqlcmd enva todo lo que est entre parntesis () al servidor. Si un procedimiento almacenado del sistema selecciona un conjunto y devuelve un valor, solo se devuelve la seleccin. La instruccin EXIT()sin nada entre los parntesis ejecuta todo lo que precede a estos en el lote y, a continuacin, se cierra sin ningn valor devuelto. Cuando se especifica una consulta incorrecta, sqlcmd se cierra sin devolver ningn valor.
Aqu se muestra una lista de formatos de EXIT: :EXIT No ejecuta el lote y, despus, sale de forma inmediata y no devuelve ningn valor. :EXIT( ) Ejecuta el lote y, a continuacin, sale sin devolver ningn valor. :EXIT(query) Ejecuta el lote que incluye la consulta y, a continuacin, se cierra tras devolver el resultado de la consulta. Si se usa RAISERROR en un script de sqlcmd y se genera el estado 127, sqlcmd se cerrar y devolver un identificador de mensaje al cliente. Por ejemplo: RAISERROR(50001, 10, 127) Este error har que el script de sqlcmd finalice y devuelva el identificador de mensaje 50001 al cliente. Los valores devueltos -1 a -99 estn reservados para SQL Server; sqlcmd define los siguientes valores devueltos adicionales:
Descripcin Error encontrado antes de seleccionar el valor devuelto. No se encontr ninguna fila al seleccionar el valor devuelto. Error de conversin al seleccionar el valor devuelto.
GO [count] GO marca tanto el final de un lote como la ejecucin de cualquier instruccin de Transact-SQL almacenada en cach. Cuando especifique un valor para count, las instrucciones almacenadas en cach se ejecutarn tantas veces como indique count, como un solo lote. Otros comandos :r < filename > Analiza instrucciones Transact-SQL y comandos sqlcmd adicionales desde el archivo especificado por<filename> en la memoria cach de instrucciones. Si el archivo contiene instrucciones Transact-SQL que no van seguidas de GO, debe escribir GO en la lnea que sigue a :r.
Nota < filename > se lee de forma relativa al directorio de inicio en el que se ejecut sqlcmd.
El archivo se leer y se ejecutar despus de que se encuentre un terminador de lote. Puede emitir varios comandos :r. El archivo puede incluir cualquier comando de sqlcmd. Eso incluye el terminador de lote GO.
Nota El recuento de lneas que se muestra en el modo interactivo aumentar en uno por cada comando :rque se encuentre. El comando :r aparecer en la salida del comando de lista.
:Serverlist
Enumera los servidores configurados localmente y los nombres de los servidores que difunden en la red. :Connect server_name[\instance_name] [-l timeout] [-U user_name [-P password]] Conecta con una instancia de SQL Server. Tambin cierra la conexin actual. Opciones de tiempo de espera:
0 n>0
La variable de scripting SQLCMDSERVER reflejar la conexin activa actual. Si no se especifica timeout, el valor de la variable SQLCMDLOGINTIMEOUT es el predeterminado. Si solo se especifica user_name (como opcin o como variable de entorno), se solicitar al usuario que especifique una contrasea. Esto no es as si se han establecido las variables de entorno SQLCMDUSER o SQLCMDPASSWORD. Si no se proporcionan opciones ni variables de entorno, se iniciar sesin en modo Autenticacin de Windows. Por ejemplo, para conectar con una instancia, instance1, de SQL Server,myserver, mediante seguridad integrada, se necesitara lo siguiente: :connect myserver\instance1 Para conectar con la instancia predeterminada de myserver con variables de script, utilizara lo siguiente: :setvar myusername test :setvar myservername myserver :connect $(myservername) $(myusername) [:] !!< command> Ejecuta comandos del sistema operativo. Para ejecutar un comando del sistema operativo, inicie una lnea con dos signos de exclamacin (!!) seguidos por el comando del sistema operativo. Por ejemplo: :!! Dir
Entre las rutas de archivo vlidas se incluyen: C:\<filename>, \\<Servidor>\<RecursoCompartido$>\<filename> y "C:\Una carpeta\<file name>". Si hay algn espacio en blanco en la ruta de acceso, use comillas. Cada nueva sesin de sqlcmd sobrescribir los archivos existentes que tengan el mismo nombre.
Mensajes informativos
sqlcmd imprime los mensajes informativos enviados por el servidor. En el siguiente ejemplo, tras ejecutar las instrucciones de Transact-SQL, se imprime un mensaje informativo. En el smbolo del sistema, escriba lo siguiente: sqlcmd At the sqlcmd prompt type: USE AdventureWorks2012; GO Cuando se presiona ENTRAR, se imprime el siguiente mensaje informativo: "Se cambi el contexto de la base de datos a 'AdventureWorks2008R2'".
Nota sqlcmd devuelve mensajes de error en el formato habitual. Tenga en cuenta que los mensajes de error tambin salen en el flujo de texto XML en formato XML. Con :XML ON, sqlcmd no muestra mensajes informativos.
Para desactivar el modo XML, use el siguiente comando: :XML OFF.
El comando GO no debe aparecer antes de que se emita el comando XML OFF, ya que el comando XML OFF vuelve a cambiar sqlcmd a la salida orientada a filas. Los datos XML (de flujo) y los datos del conjunto de filas no se pueden mezclar. Si el comando XML ON no se ha emitido antes de ejecutar una instruccin Transact-SQL que genera flujos XML, la salida ser confusa. Si se ha emitido el comando XML ON, no se pueden ejecutar instrucciones Transact-SQL que den como resultado conjuntos de filas normales.
Fuente http://msdn.microsoft.com/es-es/library/ms162773.aspx