Editar scripts SQLCMD en el editor de Transact-SQL

Al escribir o modificar scripts en el editor de Transact-SQL, puede utilizar una mezcla de comandos SQLCMD y Transact-SQL si habilita primero el modo SQLCMD.Para obtener más información, vea Cómo: Habilitar el modo SQLCMD en el Editor de Transact-SQL.

Escribir y modificar scripts SQLCMD

Si desea incluir comandos SQLCMD y comandos Transact-SQL en el mismo script, debe asegurarse de que el script cumple con los siguientes requisitos:

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

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

  • Los comandos SQLCMD pueden ir precedidos de comentarios o espacios en blanco.

  • Los caracteres de comentario de una sola línea son dos guiones (--) y deben aparecer al comienzo de una línea.Los caracteres de comentario impiden la ejecución de los comandos SQLCMD.

  • Antes de cada comando SQLCMD, debe colocar dos puntos en el inicio de la línea para distinguirlo claramente de los comandos Transact-SQL.Las únicas excepciones son los comandos !! y exit, para los que los dos puntos son opcionales.

  • Puede utilizar variables de entorno y variables definidas como parte de un script SQLCMD, pero no puede utilizar las variables SQLCMD integradas.

Sintaxis SQLCMD admitida

Puede utilizar los comandos siguientes:

  • :r nombreDeArchivo
    Analiza comandos SQLCMD e instrucciones de Transact-SQL adicionales desde el archivo especificado mediante nombreDeArchivo en la caché de instrucciones. nombreDeArchivo se lee de forma relativa al directorio de inicio de Visual Studio.El archivo se lee y se ejecuta después de que se encuentre un terminador de lote.Puede emitir varios comandos :r.El archivo puede incluir cualquier comando SQLCMD, incluido el terminador de lote que se define en Herramientas, Opciones.Puede utilizar :r en un script anterior o posterior a la implementación para incluir otros scripts.

  • :setvar valorDeLaVariable
    Define las variables de script.Las variables de script tienen el siguiente formato: $(Variable).Los nombres de variables no distinguen entre mayúsculas y minúsculas.Si una variable definida mediante :Setvar tiene la misma variable que una variable de entorno, la variable definida mediante :setvar tiene prioridad.Los nombres de variables no deben contener caracteres de espacio en blanco.Los nombres de variable no pueden tener el mismo formato que una expresión variable como $(var).Si el valor de la cadena de la variable de script contiene espacios en blanco, debe especificar el valor entre comillas.Si no se especifica un valor para una variable de script, la variable de script se quita.

  • :connect nombreDeServidor [\nombreDeInstancia] [-l tiempoDeEspera] [-U nombreDeUsuario [-P contraseña]]
    Conecta con una instancia de SQL Server y cierra la conexión actual cuando el número de segundos especificados como tiempoDeEspera ha transcurrido.Puede especificar "-l 0" para un tiempo de espera infinito o un número positivo de segundos, como "-l 30".Si no proporciona ninguna de las opciones ni variables de entorno para nombreDeUsuario y contraseña, el modo de autenticación de Windows se utiliza para iniciar sesión. Al ejecutar el comando SQLCMD connect en el editor de Transact-SQL, se le volverá a preguntar si desea conectar con un servidor de bases de datos mediante la ventana Conectarse al motor de base de datos.

  • :on error [exit | ignore]
    Establece la acción que se llevará a cabo cuando se produzca un error durante la ejecución del script o del lote.Si utiliza la opción exit, la ejecución se cierra con el valor de error adecuado.Si utiliza la opción ignore, el editor de Transact-SQL omite el error y continúa ejecutando el lote o script.De forma predeterminada, se imprime un mensaje de error.

  • :out nombreDeArchivo | stderr | stdout
    Redirija todos los resultados de la consulta al archivo especificado por nombreDeArchivo o a la pestaña Mensajes.(En Visual Studio, stderr y stdout envían los resultados a la pestaña Mensajes.) El comando out puede aparecer varias veces en un script.De forma predeterminada, el resultado se envía a la pestaña Mensajes.Si se especifica un nombreDeArchivo, Visual Studio crea o abre un archivo para recibir los resultados de la consulta.Si el archivo ya existe, se truncará en cero bytes antes de escribir los resultados.

  • :error nombreDeArchivo | stderr | stdout
    Redirija todos los resultados de error al archivo especificado por nombreDeArchivo o a la pestaña Mensajes.(En Visual Studio, stderr y stdout envían los resultados a la pestaña Mensajes.)  El comando error puede aparecer varias veces en un script.De forma predeterminada, los resultados de error se envían a stderr.Si se especifica un nombreDeArchivo, Visual Studio crea o abre un archivo para recibir los mensajes de error.Si el archivo ya existe, se truncará en cero bytes antes de escribir el mensaje de error.

  • [:]exit
    Detiene el lote actual sin ejecutar el lote ni devolver valor alguno.

  • [:]exit()
    Ejecuta el lote y, a continuación, se detiene sin devolver ningún valor.

  • [:]exit(consulta)
    Ejecuta el lote (incluida la consulta), devuelve los resultados de la consulta y, a continuación, se detiene.

  • [:]!!Comando del sistema operativo
    Ejecuta los comandos del sistema operativo en el equipo que está ejecutando Visual Studio.Para ejecutar un comando del sistema operativo, empiece una línea con dos signos de exclamación, !!, seguidos por el comando del sistema operativo.

Nota

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

Los comandos SQLCMD que no aparecen en la lista anterior no son compatibles con el editor de Transact-SQL.Cuando se ejecuta un script que contiene palabras clave SQLCMD no admitidas, el editor de Transact-SQL envía un mensaje al destino, por cada palabra clave no compatible, que indica "Command <unsupported command> is not supported. String was not processed.".El script se ejecutará correctamente, aunque los comandos no compatibles se omitirán.

Código de colores en los scripts SQLCMD

Cuando esté habilitado el Modo SQLCMD, los scripts estarán codificados mediante colores.El código de colores para las palabras clave de Transact-SQL permanece igual.Los comandos SQLCMD se presentan con un fondo sombreado.

Ejemplos

En el siguiente ejemplo se utilizan las instrucciones SQLCMD para crear un carpeta de salida c:\TempSqlcmdOutput con nombre y un archivo de salida testoutput.txt con nombre.El ejemplo también ejecuta dos instrucciones SELECT de Transact-SQL y otro comando SQLCMD para imprimir el directorio actual del programa Visual Studio.El archivo resultante contiene el mensaje resultante de la instrucción DIR, seguido de los resultados de las instrucciones Transact-SQL.En este ejemplo se supone que existe una conexión a una instancia de SQL Server ya establecida y que el Modo SQLCMD se ha habilitado.

!!mkdir c:\TempSqlcmdOutput
:out c:\TempSqlCmdOutput\testoutput.txt
select @@VERSION as 'Server Version'
!!dir
GO
select @@SERVERNAME as 'Server Name'
GO 4

Vea también

Tasks

Cómo: Ejecutar una consulta

Cómo: Establecer opciones para la ejecución de consultas y resultados

Conceptos

Información general sobre los resultados de la consulta