我需要检查通过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中是否失败
发布于 2011-03-24 13:50:18
您需要使用选项
注:这是大写
-V,而不是小写-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。
发布于 2011-03-24 12:08:43
我不确定,但是您试过SQLCMD -m开关吗?sqlcmd实用程序
-m error_level-控制哪些错误消息被发送到stdout。发送严重级别大于或等于此级别的消息。当此值设置为-1时,将发送包括信息性消息在内的所有消息。不允许在-m和-1之间使用空格。例如,-m-1是有效的,而-m -1不是。
https://stackoverflow.com/questions/5418690
复制相似问题