Возвращаемое значение программы SQLCMD

мне нужно проверить состояние выхода (успех/сбой) запроса, выполняемого с помощью утилиты SQLCMD. Например, сервер, который я подключаю не имя базы данных EastWind. Затем команда ниже завершается ошибкой с сообщением ...

> "C:Program FilesMicrosoft SQL Server0ToolsBinnSQLCMD.EXE" 
     -S ZEPHIR -E -Q "USE WestWind"
Changed database context to 'WestWind'.
> echo %errorlevel%
0
> "C:Program FilesMicrosoft SQL Server0ToolsBinnSQLCMD.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 ответов


вам нужно использовать -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

обновление: в качестве альтернативы вы можете использовать . Который имеет разную семантику для выполнения (весь пакет останавливается при первой ошибке). 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.


Я не уверен, но вы пробовали переключатель SQLCMD-m? программы sqlcmd