Trabalhei algumas vezes com scripts de pós-implantação e sempre usei intuitivamente a ação de compilação "PostDeploy", porque é isso que é. Agora, pela primeira vez, tento seguir as instruções internas do modelo do script para usar a ":r somescript.sql"
sintaxe.
Imediatamente esta linha está sendo marcada como incorreta:
"SQL80001 sintaxe incorreta ao lado de ':'"
Encontrei sugestões para definir o PDS para criar ação "none". Isso não ajuda, o erro permanece. O que estou perdendo aqui?
Respostas:
Supondo que o erro ocorra durante o processo de compilação e que você não tenha nenhum erro de sintaxe real, é uma tarefa simples
o erro também ocorre quando o arquivo sendo importado não existe. Por favor, verifique a localização do arquivo. Se você não forneceu um caminho absoluto, o caminho será relativo à pasta da solução (pelo menos para mim é).
Se, durante o desenvolvimento, você desejar ver o erro relatado pelo processo de compilação, ative o "modo SQLCMD" no editor T-SQL no Visual Studio. Há um botão à direita na barra de botões com um "!" nele que deve permitir isso. Ou você pode ir para o menu SQL , selecione Editor do Transact-SQL -> , selecione Configurações de execução -> e , finalmente, selecione Modo SQLCMD . Agora, quando você executar o script, ele interpretará corretamente
:r
, assim como o processo de compilação / publicação.Além disso, seu PDS (Post Deploy Script) precisa ter sua Ação de Construção definida como PostDeploy . Se estiver definido como Nenhum , será ignorado inteiramente pelo processo de construção do SSDT.
fonte
Erro válido
Isto é porque
:r somescript.sql
sql não é válido. Você está vendo um erro de sintaxe, que é exatamente o que a mensagem de erro indica.Modo SQLCMD
O script pós-implantação é executado no modo SQLCMD.
Resolução
Lembre-se de que você pode se conectar a um banco de dados e executar sql no Visual Studio. Você veria esse mesmo erro de sintaxe se abrisse o mesmo script no SSMS. No entanto, no SSMS e no Visual Studio, você pode "ativar" o Modo SQLCMD.
VS 2017
SSMS 17, SSMS 18
Veja também
fonte