SQLCMD utility from BAT file - how to return ERRORLEVEL in case of syntax error

后端 未结 2 1411
终归单人心
终归单人心 2021-02-08 11:48

How can I get %ERRORLEVEL% from SQLCMD utility when some of .sql files contains syntax error? These files create stored procedures. They don\'t invoke \"raiseerror\", but they c

相关标签:
2条回答
  • 2021-02-08 12:27

    Thank you, here is the work batch script.

    @ECHO OFF
    setlocal enabledelayedexpansion
    FOR /R "C:\SQL" %%G IN (*.sql) DO (
    sqlcmd -S%1 -d tangoDB -E -h-1 -w255 -i "%%G" -b
    echo   %%G  -  !ERRORLEVEL!
    IF !ERRORLEVEL! NEQ 0 EXIT /B !ERRORLEVEL!
    )
    
    0 讨论(0)
  • 2021-02-08 12:42

    You do need the -b switch but together with enabledelayedexpansion, that way you can use !errorlevel! inside the loop and get the expected results.

    Put setlocal enabledelayedexpansion anywhere before you execute sqlcmd, probably best at the beginning of the batch or just before the loop. Also note the use of exclamation points (!) instead of the percent signs (%), which denote the use of delayed expansion.

    [I also tested with if not errorlevel 0 … (no !, nor any %: see help if) but I could not get the desired results]

    0 讨论(0)
提交回复
热议问题