运行sqlcmd后出现命令提示符errorlevel问题

运行sqlcmd后出现命令提示符errorlevel问题,cmd,command-prompt,sqlcmd,errorlevel,Cmd,Command Prompt,Sqlcmd,Errorlevel,我的代码如下: CALL:ECHOCOLOR "Executing on server:[S059D526\TCH] db:CS filename:[9990294_UPDATE_Concessions.sql]." Cyan SET CURRENT_SCRIPT="9990294_UPDATE_Concessions.sql" if not exist "9990294_UPDATE_Concessions.sql" ( CALL:ECHOCOLOR "skipping execution

我的代码如下:

CALL:ECHOCOLOR "Executing on server:[S059D526\TCH] db:CS filename:[9990294_UPDATE_Concessions.sql]." Cyan
SET CURRENT_SCRIPT="9990294_UPDATE_Concessions.sql"
if not exist "9990294_UPDATE_Concessions.sql" (
  CALL:ECHOCOLOR "skipping execution of file [9990294_UPDATE_Concessions.sql].  Possibly it was renamed because it has already ran" Yellow
)
if exist "9990294_UPDATE_Concessions.sql" (
  CALL:ECHOCOLOR "executing script [9990294_UPDATE_Concessions.sql]" Cyan
  sqlcmd -V 1 -r1 -E -S S059D526\TCH -d "CS" -i "9990294_UPDATE_Concessions.sql" -o "9990294_UPDATE_Concessions.sql.run_20120508_12_19_36.log"
)
CALL:ECHORESULT "result [OK=0,ERR=any other]: %errorlevel%" %errorlevel%
if NOT ERRORLEVEL 0 GOTO FINAL_ERROR
if exist "9990294_UPDATE_Concessions.sql" rename "9990294_UPDATE_Concessions.sql" "9990294_UPDATE_Concessions.sql.ok"

我面临的问题是
errorlevel
,因为在我运行数据库脚本之后,它总是返回0。这是因为指令调用:ECHORESULT“结果[OK=0,ERR=any other]:%errorlevel%%errorlevel%。如果脚本运行时出现错误,它将永远不会出现
最终错误
。我不知道当我出现脚本错误时如何进行验证以停止进程。

您的错误检查逻辑错误

如果ERRORLEVEL N
为真,如果ERRORLEVEL>=N。因此
如果不是ERRORLEVEL 0
将永远不会为真!(假设错误级别不是负值)

你想要哪一个

if ERRORLEVEL 1 goto FINAL_ERROR

还有一件事。您确实应该在尝试测试的命令之后立即测试ERRORLEVEL。我不知道如何编码
:ECHORESULT
例程,但它可能会改变当前的ERRORLEVEL值

if %ERRORLEVEL% neq 0 goto FINAL_ERROR