Возвращаемое значение 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
?
Ответы
Ответ 1
Вам нужно использовать опцию -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
.
Ответ 2
Я не уверен, но вы пробовали переключатель SQLCMD -m? sqlcmd Утилита