J'ai 4 scripts sql que je veux exécuter dans un DACPAC dans PostDeployment, mais lorsque j'essaye de créer le projet VS pour 3 d'entre eux, j'obtiens cette erreur:
Only one statement is allowed per batch. A batch separator, such as 'GO', might be required between statements.
Les scripts ne contiennent que des INSERT
instructions dans différentes tables du DB. Et tous sont structurés comme ça
IF NOT EXISTS (SELECT 1 FROM dbo.Criteria WHERE Name = 'Mileage') INSERT INTO dbo.Criteria(Name) VALUES ('Mileage');
uniquement sur des tables différentes et avec des données différentes.
Ma question est pourquoi VS se plaint-il de 3 d'entre eux alors que tous les scripts sont identiques en termes de syntaxe et d'opérations?
PS: Ajouter 'GO' entre les instructions comme le suggère l'erreur ne fait rien.
la source
Quoi qu'il en soit, cela semble être assez ancien, je suis resté quelques heures avec cela aussi et je pense que cette méthode pourrait être utile pour beaucoup.
Dans
Database project
, les fichiers définis commeBuild
étant considérés comme une structure de base de données, une seule instruction est autorisée dans un tel fichier par conception.Go
ni aucun autre terminateur de lot ne changera ce comportement, ce message n'est qu'une erreur. Plus d'infos ici.Il existe de nombreuses autres options de construction pour les fichiers de ce projet. Pour votre cas, il semble que
PostDeploy
. Dans un tel fichier, vous pourriez avoir diverses commandes commeinserts
etc.Ensuite, vous pouvez utiliser la sortie du projet de base de données en tant que fichier dacpac pour les applications de base de données Data-Tier (sinon, il n'est pas inclus).
la source
Supprimez le; (point-virgule) du dernier de chaque instruction et je ne suis pas sûr mais GO n'est pas requis entre les instructions d'insertion ci-dessus.
la source