在SSMS运行SQL中,如果不在语句之间返回行,则会产生错误

Sha*_*ane 5 sql-server ssms sql-server-2017-express

我使用SSMS v17.6与SQL Server Express v14.0.1000.169.

当我运行以下DELETE语句时:

delete from foo
go
Run Code Online (Sandbox Code Playgroud)

我收到错误:

'go'附近的语法不正确.

但是如果我执行类似的SELECT声明:

select * from foo 
go
Run Code Online (Sandbox Code Playgroud)

然后没有错误.

似乎错误发生在任何不返回结果的语句中.我已经检查了SSMS中的查询执行设置,批处理分隔符设置为go.SSMS似乎正在向服务器发送它不应该做的事情.

我在多台机器上看过这个.

rob*_*pim 0

我很想知道这是否是该批次中唯一的脚本?我怀疑您正在运行的代码之前的某个字符导致了问题。

有两种方法可以验证这一点:

  1. 在SSMS中打开一个新选项卡,输入delete from foo go并执行。
  2. 在语句之前添加终止符;delete from foo go

在这种情况下,错误还会发生吗?