你能让SQLCMD立即在脚本中运行每个语句而不使用“GO”吗?

时间:2011-02-09 11:21:17

标签: sql-server sqlcmd

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

这样可以防止需要将定期GO命令插入到非常大的脚本中。

2 个答案:

答案 0 :(得分:8)

没有

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

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

答案 1 :(得分:2)

嗯,我想这不会有帮助,但是对你的问题的答案是:

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

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

特别是最后一句听起来令人生畏......

如果所有线路都以;而且没有;任何其他地方(例如在文本字段中) 试试

sqlcmd -c ;