Modificar secuencias de comandos SQLCMD con el Editor de consultas

Actualizado: 17 de julio de 2006

Con el Editor de consultas de Microsoft SQL Server, es posible escribir y modificar consultas como secuencias de comandos SQLCMD. Las secuencias de comandos SQLCMD del Editor de consultas pueden utilizar las mismas características que todas las secuencias de comandos Transact-SQL. Entre estas características figuran las siguientes:

  • Código de colores
  • Ejecución de secuencias de comandos
  • Control de código fuente
  • Análisis de secuencias de comandos
  • Plan de presentación

Habilitar las secuencias de comandos SQLCMD en el Editor de consultas

Para utilizar el Editor de consultas de SQL Server para escribir o modificar secuencias de comandos SQLCMD, es necesario habilitar el modo de secuencias de comandos. De forma predeterminada, este modo no está habilitado en el Editor de consultas. Puede habilitar el modo de secuencias de comandos si hace clic en el icono Modo SQLCMD de la barra de herramientas o si selecciona Modo SQLCMD en el menú Consulta. Ambos métodos activarán las secuencias de comandos SQLCMD en la ventana actual.

Para cambiar una ventana del Editor de consultas al modo SQLCMD

  1. En el Explorador de objetos, haga clic con el botón secundario en el servidor y, a continuación, haga clic en Nueva consulta para abrir una ventana nueva del Editor de consultas.

  2. En el menú Consulta, haga clic en Modo SQLCMD.

    El Editor de consultas ejecuta instrucciones sqlcmd en su contexto.

  3. En la barra de herramientas del Editor SQL, en la lista Bases de datos disponibles, seleccione AdventureWorks.

  4. En la ventana Editor de consultas, escriba las siguientes instrucciones Transact-SQL y, a continuación, la instrucción !!DIR sqlcmd:

    SELECT DISTINCT Type FROM Sales.SpecialOffer;
    GO
    !!DIR
    GO
    SELECT ProductCategoryID, Name FROM Production.ProductCategory;
    GO
    
  5. Presione F5 para ejecutar toda la sección de instrucciones mixtas Transact-SQL y MS-DOS.

    Observe los paneles de resultados SQL de la primera y tercera instrucciones.

  6. En el panel Resultados, haga clic en la ficha Mensajes para ver los mensajes de las tres instrucciones:

    • (6 filas afectadas)
    • <La información de directorio>
    • (4 filas afectadas)
ms174187.note(es-es,SQL.90).gifImportante:
Cuando se ejecuta desde la línea de comandos, la utilidad sqlcmd permite una interacción total con el sistema operativo. Al usar el Editor de consultas en Modo SQLCMD, debe tener cuidado de no ejecutar instrucciones interactivas. El Editor de consultas no puede responder a comandos del sistema operativo.

Para obtener más información acerca de cómo ejecutar SQLCMD, vea sqlcmd (utilidad) o realice el tutorial de SQLCMD.

Habilitar las secuencias de comandos SQLCMD de forma predeterminada

Para activar las secuencias de comandos SQLCMD de forma predeterminada, seleccione Opciones en el menú Herramientas, expanda Ejecución de la consulta y SQL Server, haga clic en la página General y, a continuación, active la casilla De forma predeterminada, abrir nuevas consultas en modo SQLCMD.

Escribir y modificar secuencias de comandos SQLCMD

Tras habilitar el modo de secuencias de comandos, puede escribir comandos SQLCMD e instrucciones Transact-SQL. Se aplican las reglas siguientes:

  • Los comandos SQLCMD deben ser la primera instrucción de una línea.
  • Sólo se admite un comando SQLCMD en cada línea.
  • Los comandos SQLCMD pueden ir precedidos de comentarios o espacios en blanco.
  • Los comandos SQLCMD dentro de caracteres de comentario no se ejecutan.
  • Los caracteres de comentario de una única línea son dos guiones (--) y deben aparecer al comienzo de una línea.
  • Los comandos del sistema operativo deben ir precedidos de dos signos de exclamación de cierre (!!). El comando con dos signos de exclamación de cierre hace que la instrucción que los sigue se ejecute mediante el procesador de comandos cmd.exe. El texto situado tras !! pasa como un parámetro a cmd.exe, de modo que la línea de comandos final se ejecutará como: "%SystemRoot%\system32\cmd.exe /c <text after !!>".
  • Para hacer una distinción clara entre los comandos SQLCMD y Transact-SQL, todos los comandos SQLCMD deben ir precedidos de dos puntos (:).
  • El comando GO puede ir precedido de !!: o utilizarse sin nada que lo preceda.
  • El Editor de consultas es compatible con las variables de entorno y las variables definidas como parte de una secuencia de comandos SQLCMD, aunque no es compatible con variables SQLCMD integradas o variables osql.
ms174187.Caution(es-es,SQL.90).gifAdvertencia:
SQL Server Management Studio utiliza Microsoft .NET SqlClient para la ejecución en modo regular y SQLCMD. Cuando se ejecuta desde la línea de comandos, SQLCMD utiliza el proveedor OLE DB. Puesto que se pueden aplicar diferentes opciones predeterminadas, es posible observar diferentes comportamientos al ejecutar la misma consulta en el modo SQLCMD de SQL Server Management Studio y en la herramienta SQLCMD.

Sintaxis SQLCMD compatible

El Editor de consultas admite las siguientes palabras clave de la secuencia de comandos SQLCMD:

[!!:]GO[count]

!! <command>

:exit(statement)

:Quit

:r <filename>

:setvar <var> <value>

:connect server[\instance] [-l login_timeout] [-U user [-P password]]

:on error [ignore|exit]

:error <filename>|stderr|stdout

:out <filename>|stderr|stdout

[!NOTA] Tanto para :error como para :out, stderr y stdout envían los resultados a la ficha de mensajes.

Los comandos SQLCMD que no aparecen en la lista anterior no son compatibles con el Editor de consultas. Cuando se ejecuta una secuencia de comandos que contiene palabras clave SQLCMD no compatibles, el Editor de consultas envía un mensaje al destino, por cada palabra clave no compatible, que indica que se omite un comando. La secuencia de comandos se ejecutará correctamente, aunque los comandos no compatibles se omitirán.

ms174187.Caution(es-es,SQL.90).gifAdvertencia:
Puesto que no se está iniciando SQLCMD desde la línea de comandos, existen algunas limitaciones al ejecutar el Editor de consultas en modo SQLCMD. No es posible enviar parámetros de línea de comandos como variables y, dado que el Editor de consultas no puede responder a las solicitudes del sistema operativo, hay que tener cuidado de no ejecutar instrucciones interactivas.

Código de colores en las secuencias de comandos SQLCMD

Con las secuencias de comandos SQLCMD habilitadas, las secuencias de comandos utilizarán códigos de colores. El código de colores de las palabras clave de Transact-SQL permanece igual. Los comandos SQLCMD se presentan con un fondo sombreado.

Ejemplo

El siguiente ejemplo usa una instrucción sqlcmd para crear un archivo de salida denominado testoutput.txt y ejecuta dos instrucciones SELECT de Transact-SQL junto con un comando del sistema operativo (para imprimir el directorio actual). El archivo resultante contiene la salida del mensaje de la instrucción DIR seguida de la salida de resultados de las instrucciones Transact-SQL.

:out C:\testoutput.txt
SELECT @@VERSION As 'Server Version'
!!DIR
!!:GO
SELECT @@SERVERNAME AS 'Server Name'
GO

Vea también

Otros recursos

sqlcmd (utilidad)
Tutorial de SQL Server Management Studio

Ayuda e información

Obtener ayuda sobre SQL Server 2005

Historial de cambios

Versión Historial

17 de julio de 2006

Contenido nuevo:
  • Se agregó el procedimiento para cambiar una ventana del Editor de consulta a modo SQLCMD.

5 de diciembre de 2005

Contenido modificado:
  • Se corrigió la sintaxis correspondiente a GO.
  • Se agregó el ejemplo.
  • Se combinó el contenido del tema sobre el modo SQLCMD.