¿Por qué: el comando SQLCMD está marcado como incorrecto en la secuencia de comandos posterior a la implementación?


17

He trabajado un par de veces con secuencias de comandos posteriores a la implementación y siempre utilicé intuitivamente la acción de compilación "PostDeploy", porque eso es lo que es. Ahora, por primera vez, trato de seguir las instrucciones integradas de la plantilla del script para usar la ":r somescript.sql"sintaxis.

Inmediatamente esta línea se marca como incorrecta:

"Sintaxis incorrecta SQL80001 junto a ':'"

Encontré sugerencias para configurar el PDS para construir la acción "ninguna". Esto no ayuda, el error permanece. ¿Que me estoy perdiendo aqui?


lo siento, supongo que para ser más claro "¿en qué acción está configurado el script que tiene": r "dentro?" :)
Ed Elliott

Respuestas:


15

Suponiendo que el error ocurre durante el proceso de compilación, y que no tiene ningún error de sintaxis real, y es un simple

:r path\to\file.sql

entonces el error también ocurre cuando el archivo que se importa no existe. Por favor verifique la ubicación del archivo. Si no proporcionó una ruta absoluta, la ruta será relativa a la carpeta de la solución (al menos para mí lo es).

Si, durante el desarrollo, desea ver el error que informa el proceso de compilación, asegúrese de habilitar el "modo SQLCMD" en el editor T-SQL en Visual Studio. Hay un botón en el extremo derecho en la barra de botones con un "!" en eso que debería permitir esto. O puede ir al menú SQL , seleccionar Transact-SQL Editor -> , seleccionar Configuración de ejecución -> , y finalmente seleccionar Modo SQLCMD . Ahora, cuando ejecute el script, se interpretará correctamente :r, tal como lo hace el proceso de compilación / publicación.

Además, su secuencia de comandos Post Deploy (PDS) debe tener su acción de compilación establecida en PostDeploy . Si se establece en Ninguno , el proceso de compilación SSDT lo omitirá por completo.


4

Error válido

Esto es porque :r somescript.sqlno es válido sql. Está viendo un error de sintaxis, que es precisamente lo que dice el mensaje de error.

SQL80001: sintaxis incorrecta cerca de ':'.

Modo SQLCMD

La secuencia de comandos posterior a la implementación se ejecuta en modo SQLCMD.

La utilidad sqlcmd le permite ingresar sentencias Transact-SQL, procedimientos del sistema y archivos de script en el símbolo 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 servidor SQL Agente de trabajo. Esta utilidad utiliza ODBC para ejecutar lotes de Transact-SQL.

Resolución

Recuerde que puede conectarse a una base de datos y ejecutar sql desde Visual Studio. Vería este mismo error de sintaxis si abriera el mismo script dentro de SSMS. Sin embargo, tanto en SSMS como en Visual Studio, puede "habilitar" el modo SQLCMD.

VS 2017

  • haga clic derecho en el editor que contiene el script sql
  • haga clic en Configuración de ejecución
  • haga clic en modo SQLCMD
  • Tenga en cuenta que puede hacer lo mismo desde el menú SQL

SSMS 17, SSMS 18

  • Consulta (elemento de menú)
  • Modo SQLCMD

Ver también

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.