将文件构建操作更改为无。
我想在PostDeployment中的DACPAC中运行4个sql脚本,但是当我尝试为其中3个构建VS项目时,出现此错误:
Only one statement is allowed per batch. A batch separator, such as 'GO', might be required between statements.
脚本在数据库的不同表中仅包含INSERT
语句。它们的结构都像这样]
IF NOT EXISTS (SELECT 1 FROM dbo.Criteria WHERE Name = 'Mileage') INSERT INTO dbo.Criteria(Name) VALUES ('Mileage');
仅在不同的表上和具有不同的数据。
我的问题是,当所有脚本的语法和操作都相同时,为什么VS会抱怨其中的三个?
PS:由于错误提示在语句之间添加“ GO”不会执行任何操作。
我发现了问题。当我在VS中添加文件时,我忘记从文件属性中设置Build Action = None
。因此,进行更改可以解决问题,并且现在可以编译项目。
尽管这看起来已经很老了,但我也坚持了几个小时,我认为这种方式可能对很多人有帮助。
在Database project
中,设置为Build
的文件被认为是数据库结构,因此,根据设计,在该文件中只允许一个语句。 Go
或任何其他批处理终止符都不会更改该行为,该消息只是错误。更多信息here.
此类项目中的文件还有许多其他构建选项。对于您的情况,似乎是PostDeploy
。在这样的文件中,您可以使用各种命令,例如inserts
等。>
然后,您可以将数据库项目的输出用作数据层DB应用程序的dacpac文件(否则,不包括在内。)>
将文件构建操作更改为无。
从每个语句的末尾删除;(分号),我不确定,但是在上述插入语句之间不需要GO。
将文件构建操作更改为无。
从每个语句的末尾删除;(分号),我不确定,但是在上述插入语句之间不需要GO。