10

当某些 .sql 文件包含语法错误时,如何从 SQLCMD 实用程序获取 %ERRORLEVEL%?这些文件创建存储过程。他们不调用“raiseerror”,但他们可以包含语法错误,我需要终止该过程。但它总是将 %ERRORLEVEL% 返回为 0。我尝试使用 -b、-V 和 -m (以及它们的组合),但没有按预期对我有用。

这是我的 BAT 文件的代码片段。

REM process all sql files in "SQL\scripts" folder and subfolders
FOR /R "SQL\scripts" %%G IN (*.sql) DO (
    sqlcmd -d %1 -S %2 -U %3 -P %4 -i "%%G" -b -V 1

    echo %ERRORLEVEL%
    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
)
4

2 回答 2

11
于 2011-04-26T14:54:46.327 回答
0

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!
)
于 2012-04-17T09:24:04.770 回答