sql-server - SQLCMD的返回值

标签 sql-server windows 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 中的命令是否失败?

最佳答案

您需要使用-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/

相关文章:

c++ - 防止使用 ImpersonateNamedPipeClient()

c - 为什么我的编译器不接受 fork(),尽管我包含了 <unistd.h>?

sql-server - 用于从源代码控制重新创建数据库的批处理脚本

sql-server - SQL Server SQLCMD 命名实例登录超时已过期

SQL - 即使项目的计数为零也返回所有行

c++ - sql Column with multiple values(cpp文件中的查询实现)

windows - 在 Mingw Nvidia SDK 上编译 OpenCL

sql-server - 安装了 Microsoft SQL Server 也找不到?

sql-server - 查看加入存储过程结果

sql - 通过动态调用使用 SQLCMD 的更智能方式