Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 您是否可以让SQLCMD立即运行脚本中的每个语句,而不使用;围棋;?_Sql Server_Sqlcmd - Fatal编程技术网

Sql server 您是否可以让SQLCMD立即运行脚本中的每个语句,而不使用;围棋;?

Sql server 您是否可以让SQLCMD立即运行脚本中的每个语句,而不使用;围棋;?,sql-server,sqlcmd,Sql Server,Sqlcmd,在SQLCMD中运行脚本时,是否有设置、参数或任何其他方式使其在每个SQL语句末尾有效地运行GO命令 这将避免在非常大的脚本中插入周期性GO命令。Hmmm,我想这不会有帮助,但可以回答您的问题: -c cmd_结束 指定批处理终止符。默认情况下,通过在命令行上键入单词“GO”来终止命令并将其发送到SQL Server。重置批处理终止符时,不要使用对操作系统具有特殊意义的Transact-SQL保留关键字或字符,即使它们前面有反斜杠 尤其是最后一句话听起来令人畏惧 如果你所有的台词都以英语结尾;

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


这将避免在非常大的脚本中插入周期性GO命令。

Hmmm,我想这不会有帮助,但可以回答您的问题:

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

尤其是最后一句话听起来令人畏惧

如果你所有的台词都以英语结尾;而且没有;任何其他位置(例如在文本字段中) 试一试

没有

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


考虑到“;”终止符对于大多数语句来说仍然是可选的,因此确定语句边界可能相当棘手。

我重新编写了标题,以便更好地符合整个问题。很抱歉,如果这使你的回答不那么有意义。当我最初发布这个问题时,我以为我已经更改了它,但不知怎的,它又恢复了。@QuickBrownFox你能添加几行代码,让我们看看你的脚本是什么样子吗?如果它的每一行都有一条白线,那么-c可能没有任何作用,trickIt只是插入跨越多行并以分号结尾的语句。每条语句之间用一个换行符分隔(即没有空行)。似乎不可能将-c参数与“nothing”一起使用;谢谢我试过了。它需要在自己的行上加一个分号来运行该命令,这不是期望的效果。我想我想要的是不可能的。我想这就解决了。除非有人知道如何在一行以分号结尾时执行“GO”,这仍然可以有效地解决我的问题。@QuickBrownFox-不幸的是,没有。rene链接的页面上没有很好的文档记录,但批处理终止符必须位于行的开头(前导空格除外)。当然,如果您有一个像样的文本编辑器,您可以编辑脚本,将“;”替换为“;\nGO\n”
sqlcmd -c ;