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。