10

在 SQLCMD 中运行脚本时,是否有设置、参数或任何其他方式使其在每个 SQL 语句的末尾有效地运行 GO 命令?

这将避免将定期 GO 命令插入到非常大的脚本中的需要。

4

2 回答 2

8

不。

SQLCMD 必须自己实现一个完整的 T-SQL 解析器才能确定语句边界的位置。虽然它目前存在,但它所要做的就是找到带有“GO”的行。

鉴于“;”,确定语句边界可能非常棘手 对于大多数语句,终止符仍然是可选的。

于 2011-02-09T15:35:32.760 回答
3

嗯,我想这无济于事,但可以回答您的问题:

http://msdn.microsoft.com/en-us/library/ms162773.aspx

-c cmd_end 指定批处理终止符。默认情况下,通过在一行中单独键入单词“GO”来终止命令并将其发送到 SQL Server。重置批处理终止符时,请勿使用对操作系统具有特殊含义的 Transact-SQL 保留关键字或字符,即使它们前面有反斜杠。

尤其是最后一句话,听起来很吓人……

如果您的所有行都以 ; 并且没有;任何其他地方(例如在文本字段中)尝试

sqlcmd -c ;
于 2011-02-09T11:29:14.370 回答