SQL脚本中的错误:每个批次只允许一个语句

我有4个SQL脚本,我想在PostDeployment中的DACPAC中运行,但是当我尝试为其中的3个构buildVS项目时,出现以下错误:

Only one statement is allowed per batch. A batch separator, such as 'GO', might be required between statements. 

这些脚本仅在DB上的不同表中包含INSERT语句。 而且他们都是这样构build的

 IF NOT EXISTS (SELECT 1 FROM dbo.Criteria WHERE Name = 'Mileage') INSERT INTO dbo.Criteria(Name) VALUES ('Mileage'); 

只有在不同的表格和不同的数据。

我的问题是,为什么当所有脚本在语法和操作方面相同时,VS抱怨其中的3个?

PS:在语句之间添加“GO”,因为错误提示不会执行任何操作。

我发现了这个问题。 当我在VS中添加文件时,我忘了从文件属性中设置Build Action = None 。 所以改变这个问题就可以解决问题了,现在编译这个项目。

无论这似乎是相当老,我坚持了几个小时,以及我认为这种方式可能会有所帮助。

Database project ,设置为Build文件被认为是数据库结构,因此在这样的文件中只允许有一条语句被devise。 Go也不会有其他的批终结者会改变那个行为,那个信息就是错误的。 更多信息在这里。

这个项目中有很多文件的其他构build选项。 对于你的情况,似乎PostDeploy 。 在这样的文件,你可以有各种命令,如inserts

然后,可以将数据库项目的输出用作数据层DB应用程序的dacpac文件(否则不包括在内)。

从每个语句的最后删除;(分号),我不确定,但上面的插入语句之间不需要GO。

Interesting Posts