Возвращаемое значение программы 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
.