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



我想在部署后的一个 DACPAC 中运行 4 个 sql 脚本,但是当我尝试为其中 3 个脚本构建 VS 项目时,出现此错误:

每批只允许一个语句。语句之间可能需要批处理分隔符,例如"GO"。

这些脚本仅包含数据库上不同表中的INSERT语句。所有这些都是这样的结构

如果不存在(从 DBO 中选择 1。条件 其中名称 ="里程")插入 DBO。标准(名称)值("里程");仅在不同的表和不同的数据上。

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

PS:在错误建议的语句之间添加"GO"不会做任何事情。

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

不管这似乎很老了,我也坚持了几个小时,我认为这种方式可能对许多人有所帮助。

Database project中,设置为Build的文件被认为是数据库结构,因此在设计上只允许在这样的文件中有一个语句。 Go任何其他批处理终止符都不会更改该行为,但该消息只是错误。更多信息在这里。

此类项目中的文件还有很多其他构建选项。对于您的情况,似乎PostDeploy.在这样的文件中,您可以有各种命令,如inserts等。

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

我在使用 SQL Server 数据工具时遇到了此错误,这是因为我的部署后脚本被错误地添加到项目中。

在项目文件中,任何数据库对象都应具有类似

<Build Include="dbotablesmytable.sql"/>

但是脚本应该有

<None Include="myscript.sql"/>

但是我添加了我的脚本文件,它最终得到了一个Build标签而不是一个None。将其更改为None修复了错误。

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

相关内容

  • 没有找到相关文章

最新更新