Возвращаемое значение SQLCMD - PullRequest
14 голосов
/ 24 марта 2011

Мне нужно проверить состояние выхода (успех / сбой) запроса, выполненного с помощью утилиты 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 ]

20 голосов
/ 24 марта 2011

Вам необходимо использовать опцию -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.

0 голосов
/ 24 марта 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...