Compartir a través de


Editar scripts de SQLCMD con el Editor de consultas

Use el editor de consultas en SQL Server Management Studio (SSMS) para escribir y editar consultas como scripts SQLCMD. Puede usar scripts SQLCMD para procesar comandos del sistema de Windows e instrucciones Transact-SQL en el mismo script.

Habilitación del modo SQLCMD

Para usar el editor de consultas para escribir o editar scripts SQLCMD, es necesario activar el modo de scripts SQLCMD. El modo SQLCMD no está habilitado de forma predeterminada. Para habilitar el modo de scripting, seleccione el icono Modo SQLCMD en la barra de herramientas o seleccione Modo SQLCMD en el menú Consulta .

Nota:

Al habilitar el modo SQLCMD, IntelliSense y el depurador de Transact-SQL están desactivados en el editor de consultas.

Los scripts SQLCMD en el editor de consultas pueden usar las mismas características que usan todos los scripts de Transact-SQL. Estas características incluyen:

  • Codificación en colores
  • Ejecución de scripts
  • Control de código fuente
  • Análisis de scripts
  • Plan de exhibición

Habilitación del scripting SQLCMD en el Editor de consultas

Para habilitar el scripting SQLCMD en una ventana activa del Editor de Consultas, use el siguiente procedimiento.

Cambio de una ventana del editor de consultas al modo SQLCMD

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

  2. En el menú Consulta, seleccione el Modo SQLCMD.

    Las instrucciones SQLCMD se ejecutan en el contexto del editor de consultas.

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

  4. En la ventana del editor de consultas, escriba las siguientes instrucciones Transact-SQL y la !!DIR instrucción SQLCMD:

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

    Observe los dos paneles de resultados de SQL de las instrucciones primera y tercera.

  6. En el panel Resultados, seleccione la pestaña Mensajes para ver los mensajes de las tres instrucciones:

    • (6 row(s) affected)
    • <The directory information>
    • (4 row(s) affected)

Importante

Al ejecutar sqlcmd desde la línea de comandos, permite la interacción completa con el sistema operativo. Al usar el editor de consultas en modo SQLCMD, tenga cuidado de no ejecutar instrucciones interactivas. El editor de consultas no puede responder a las solicitudes del sistema operativo. Para obtener más información sobre cómo ejecutar SQLCMD desde la línea de comandos, vea utilidad sqlcmd.

Habilitar scripting SQLCMD de forma predeterminada

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

Escritura y edición de scripts SQLCMD

Después de habilitar el modo de scripting, puede escribir tanto comandos SQLCMD como instrucciones Transact-SQL. Se aplican las reglas siguientes:

  • Los comandos SQLCMD deben ser la primera instrucción de una línea.

  • Solo se admite un comando SQLCMD en cada línea.

  • Puede usar comentarios y espacios en blanco delante de los comandos SQLCMD.

  • Los comandos SQLCMD dentro de caracteres de comentario no se ejecutan.

  • Los caracteres de comentario de una sola línea son dos guiones (--) y deben aparecer al principio de una línea.

  • Prefija los comandos del sistema operativo con dos signos de exclamación (!!). El comando con dos signos de exclamación hace que la instrucción que sigue se ejecute mediante el procesador de comandos cmd.exe. El texto después de !! se pasa como parámetro a cmd.exe, por lo que la línea de comandos final se ejecuta como: "%SystemRoot%\system32\cmd.exe /c <text after !!>".

  • Para distinguir claramente entre comandos SQLCMD y Transact-SQL, prefijo todos los comandos SQLCMD con dos puntos (:).

  • El GO comando se puede usar sin prefacio o precedido por !!:.

  • El editor de consultas admite variables de entorno y variables que se definen como parte de un script SQLCMD, pero no admite variables SQLCMD o osql integradas. SSMS procesa variables SQLCMD de manera sensible a mayúsculas y minúsculas. Por ejemplo, PRINT '$(COMPUTERNAME)' genera el resultado correcto, pero PRINT '$(ComputerName)' devuelve un error.

Precaución

SSMS usa la SqlClient biblioteca de .NET para su ejecución en modo normal y SQLCMD. Al ejecutar la consulta desde la línea de comandos, sqlcmd usa el proveedor OLE DB. Dado que se pueden aplicar diferentes opciones predeterminadas, es posible que vea un comportamiento diferente al ejecutar la misma consulta en modo SQLCMD dentro de SSMS, en comparación con el modo SQLCMD en la utilidad sqlcmd .

Sintaxis de SQLCMD admitida

El editor de consultas admite las siguientes palabras clave de script SQLCMD:

  • [!!:]GO[count]
  • !! <command>
  • :exit(statement)
  • :Quit
  • :r <filename>
  • :setvar <var> <value>
  • :connect server[\instance] [-l login_timeout] [-U user [-P password]] 1
  • :on error [ignore|exit]
  • :error <filename>|stderr|stdout 2
  • :out <filename>|stderr|stdout 2

1 Para obtener más información sobre el :connect comando, vea Comandos en la utilidad sqlcmd.

2 El editor de consultas envía la salida a la pestaña Mensajes de stderr y stdout.

El editor de consultas no admite comandos SQLCMD que no se incluyen en la lista anterior. Al ejecutar un script que contiene palabras clave SQLCMD no admitidas, el editor de consultas omite el comando. Para cada palabra clave no admitida, el editor de consultas envía el siguiente mensaje al destino:

Ignoring command <ignored_command>

Precaución

Dado que no inicia SQLCMD desde la línea de comandos, hay algunas limitaciones al ejecutar el Editor de consultas en modo SQLCMD. No se pueden pasar parámetros de línea de comandos como variables. Además, dado que el editor de consultas no puede responder a las indicaciones del sistema operativo, debe tener cuidado de no ejecutar instrucciones interactivas.

Código de colores en los scripts SQLCMD

Al habilitar el scripting SQLCMD, los scripts se codifican de color. La codificación de colores para Transact-SQL palabras clave permanece igual. Los comandos SQLCMD aparecen con un fondo sombreado.

Examples

En el ejemplo siguiente se usa una instrucción SQLCMD para crear un archivo de salida denominado testoutput.txt. Ejecuta dos instrucciones Transact-SQL SELECT y un comando del sistema operativo que imprime el directorio actual. El archivo resultante contiene la salida del mensaje de la DIR instrucción y la salida de los resultados de las instrucciones Transact-SQL.

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