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?
Respuestas:
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
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.
fuente
Error válido
Esto es porque
:r somescript.sql
no es válido sql. Está viendo un error de sintaxis, que es precisamente lo que dice el mensaje de error.Modo SQLCMD
La secuencia de comandos posterior a la implementación se ejecuta en modo SQLCMD.
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
SSMS 17, SSMS 18
Ver también
fuente