SQLCMD连接错误处理

问题描述:

如果在T-SQL脚本中运行多个:CONNECT语句(如果连接失败),则脚本的其余部分不会运行。SQLCMD连接错误处理

是否有一些SQLCMD命令作为Try/Catch块来处理连接错误?我知道,由于SQLCMD命令在SQL代码之前运行,因此T-SQL Try/Catch无效。

您可以将您的sqlcmd代码放入批处理文件中,然后执行该批处理文件(如建议的here)。

您可以使用选项-S指定要连接的服务器,并使用选项-Q指定您的TSQL代码(有关MSDN的更多信息)。

例如:

sqlcmd -S WrongServerName -Q "select @@servername" 
sqlcmd -S CorrectServerName -Q "select @@servername" 

pause 

第一命令将失败(如果WrongServerName是不存在的或离线服务器),而第二个将被执行(如果CorrectServerName是一个在线服务器),并返回服务器的名称。

+0

感谢您的支持。除了使用批处理文件之外是否还有其他解决方案我问的原因是这些脚本是从一个表格中的一个列中获取的,然后连接在一起以制作一个通过多个服务器运行的大脚本 –

+1

@RyanGillooly是的,我明白了你的观点:我不知道是否有更多SQLCMD中错误处理的高级机制。我使用这种方法是因为我执行简单的TSQL指令,所以批处理文件对我来说是一个很好的解决方案。我明白,如果你必须运行复杂的脚本,这个解决方案可能不足。我曾经读过ERRORLEVEL变量,但我认为它只处理DOS命令返回的错误。对不起,我无法进一步帮助你。 – Andrea