SQLCMD的返回值

时间:2011-03-24 11:54:21

标签: sql-server dos sqlcmd

我需要检查通过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

中检查命令是否失败

2 个答案:

答案 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