J'ai travaillé plusieurs fois avec des scripts de post-déploiement et j'ai toujours, intuitivement, utilisé l'action de build "PostDeploy", car c'est ce que c'est. Maintenant, pour la première fois, j'essaie de suivre les instructions intégrées du modèle de script pour utiliser la ":r somescript.sql"
syntaxe.
Immédiatement, cette ligne devient marquée comme incorrecte:
"SQL80001 syntaxe incorrecte à côté de ':'"
J'ai trouvé des suggestions pour définir le PDS pour créer l'action "aucune". Cela n'aide pas, l'erreur persiste. Qu'est-ce que j'oublie ici?
Réponses:
En supposant que l'erreur se produit pendant le processus de génération et que vous n'avez aucune erreur de syntaxe réelle, il s'agit d'un simple
puis l'erreur se produit également lorsque le fichier importé n'existe pas. Veuillez vérifier l'emplacement du fichier. Si vous n'avez pas fourni de chemin absolu, le chemin sera relatif au dossier de la solution (du moins pour moi, c'est le cas).
Si, lors du développement, vous souhaitez voir l'erreur signalée par le processus de génération, assurez-vous d'activer le "mode SQLCMD" dans l'éditeur T-SQL de Visual Studio. Il y a un bouton à l'extrême droite dans la barre de boutons avec un "!" en elle qui devrait permettre cela. Ou vous pouvez aller dans le menu SQL , sélectionnez Transact-SQL Editor -> , sélectionnez Execution Settings -> , puis enfin sélectionnez SQLCMD Mode . Maintenant, lorsque vous exécutez le script, il interprétera correctement
:r
, tout comme le processus de génération / publication.En outre, votre script Post Deploy (PDS) doit avoir son action Build définie sur PostDeploy . S'il est défini sur Aucun, il sera entièrement ignoré par le processus de génération SSDT.
la source
Erreur valide
C'est parce
:r somescript.sql
que SQL n'est pas valide. Vous voyez une erreur de syntaxe, qui est précisément ce que le message d'erreur indique.Mode SQLCMD
Le script de post-déploiement est exécuté en mode SQLCMD.
Résolution
N'oubliez pas que vous pouvez vous connecter à une base de données et exécuter SQL à partir de Visual Studio. Vous verriez cette même erreur de syntaxe si vous ouvriez le même script dans SSMS. Cependant, dans SSMS et Visual Studio, vous pouvez "activer" le mode SQLCMD.
VS 2017
SSMS 17, SSMS 18
Voir également
la source