我需要检查通过 SQLCMD 实用程序运行的查询的退出状态(成功/失败)。例如,我连接的服务器没有有数据库名称EastWind
。然后,下面的命令失败并显示消息...
> "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE"
-S ZEPHIR -E -Q "USE WestWind"
Changed database context to 'WestWind'.
> echo %errorlevel%
0
> "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE"
-S ZEPHIR -E -Q "USE EastWind"
Database 'EastWind' does not exist. Make sure that the name is entered correctly
> echo %errorlevel%
0
我发现这两种情况的返回值是相同的。如何检查 SQLCMD
中的命令是否失败?
最佳答案
您需要使用-V
option
Note: That's a capital
-V
, not a lowercase-v
.
示例:
> SQLCMD.EXE -S whatever -E -V16 -Q "USE does_not_exist"
Msg 911, Level 16, State 1, ...
Could not locate entry ...
> echo %ERRORLEVEL%
16
更新: 或者,您可以使用 -b
选项,该选项对执行具有不同的语义(整个批处理在出现第一个错误时停止)。 YMMV。
示例:
> SQLCMD.EXE -S whatever -E -b -Q "USE does_not_exist"
Msg 911, Level 16, State 1, ...
Could not locate entry ...
> echo %ERRORLEVEL%
1
您还可以组合 -b
和 -V
。
关于sql-server - SQLCMD的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5418690/