'GO'附近的语法不正确

And*_*ock 41 sql-server ado.net

如何通过ADO.NET在单个命令(单次执行)中执行以下SQL?

ALTER TABLE [MyTable]
    ADD NewCol INT

GO

UPDATE [MyTable] 
    SET [NewCol] = 1
Run Code Online (Sandbox Code Playgroud)

GO不支持批处理分隔符,如果没有它,则第二个语句将失败.

除了使用多次command执行之外,还有其他解决方案吗?

Jot*_*aBe 67

GO关键字不是T-SQL,但是SQL Server Management Studio中的神器,让您在多个batches.Ie脚本文件的执行,当你在运行一个SSMS T-SQL脚本文件分开,该报表是分开分批运行通过GO关键字.更多细节可以在这里找到:https://msdn.microsoft.com/en-us/library/ms188037.aspx

如果您阅读它,您将看到sqlcmd和osql也支持GO.

SQL Server不理解该GO关键字.因此,如果您需要等效项,则需要单独单独运行批处理.


Tim*_*ter 17

删除GO:

String sql = "ALTER TABLE  [MyTable] ADD NewCol INT;";
cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
sql = "UPDATE [MyTable] SET [NewCol] = 1";
cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)

看来你可以使用这个Server.这是一篇文章:

C#:执行包含GO语句的批处理T-SQL脚本


小智 8

当您的设置中更改了批处理分隔符时,也会发生这种情况。在 SSMS 中单击工具 --> 选项并转到查询执行/SQL Server/常规以检查批处理分隔符。

我刚刚用一个没有 CR LF 行结尾的脚本失败了。关闭并重新打开脚本似乎会提示修复。只是另一件事要检查!


小智 7

在 SSMS(SQL Server 管理系统)中,您可以在任何查询之后运行 GO,但有一个问题。分号和 GO 不能在同一行。去搞清楚。

这有效:

SELECT 'This Works';
GO
Run Code Online (Sandbox Code Playgroud)

这也有效:

SELECT 'This Too'
;
GO
Run Code Online (Sandbox Code Playgroud)

但这不会:

SELECT 'This Doesn''t Work'
;GO
Run Code Online (Sandbox Code Playgroud)


Vis*_*nce 5

遇到这个试图确定为什么我的查询在 SSRS 中不起作用。您不在GOSSRS 中使用,而是在不同语句之间使用分号。


Jam*_* L. 5

;在 后面加了一个分号GO,这是我的错误的原因。