我需要检查通过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
?
答案 0 :(得分:19)
您需要使用-V
option。
示例:
> 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
。
答案 1 :(得分:0)
我不确定,但您是否尝试过SQLCMD -m开关? sqlcmd Utility