Tengo 4 scripts sql que quiero ejecutar en un DACPAC en PostDeployment, pero cuando trato de construir el proyecto VS para 3 de ellos obtengo este error:
Only one statement is allowed per batch. A batch separator, such as 'GO', might be required between statements.
Los scripts contienen solo INSERT
declaraciones en diferentes tablas en la base de datos. Y todos están estructurados así
IF NOT EXISTS (SELECT 1 FROM dbo.Criteria WHERE Name = 'Mileage') INSERT INTO dbo.Criteria(Name) VALUES ('Mileage');
solo en diferentes tablas y con diferentes datos.
Mi pregunta es ¿por qué VS se queja de 3 de ellos cuando todos los scripts son iguales en términos de sintaxis y operaciones?
PD: Agregar 'GO' entre declaraciones como sugiere el error no hace nada.
sql
sql-server
visual-studio-2012
dacpac
Cosmin Ionascu
fuente
fuente
Independientemente de que esto parezca bastante viejo, también me quedé por algunas horas y creo que de esta manera podría ser útil para muchos.
En
Database project
, los archivos configuradosBuild
se consideran como Estructura de la base de datos, por lo que solo se permite una declaración en dicho archivo por diseño.Go
ni ningún otro terminador de lotes cambiará ese comportamiento, ese mensaje es solo un error. Más información aquí.Hay muchas otras opciones de compilación para archivos en dicho proyecto. Para su caso parece que
PostDeploy
. En dicho archivo podría tener varios comandos comoinserts
etc.Luego, puede usar la salida del proyecto de base de datos como archivo dacpac para aplicaciones DB de nivel de datos (de lo contrario, no está incluido).
fuente
Quite el; (punto y coma) del último de cada declaración y no estoy seguro, pero no se requiere GO entre las instrucciones de inserción anteriores.
fuente