kov*_*alu 10 sql batch-file sqlcmd syntax-error
当某些.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%
)
Run Code Online (Sandbox Code Playgroud)
mou*_*sio 11
你确实需要-b开关,但enabledelayedexpansion这样你就可以!errorlevel!在循环中使用并获得预期的结果.
setlocal enabledelayedexpansion在执行之前放置任何位置sqlcmd,可能最好在批处理的开头或循环之前.还要注意使用感叹号(!)而不是百分号(%),它表示使用延迟扩展.
[我也测试过if not errorlevel 0 …(不!,也没有%:见help if),但我无法得到预期的结果]
| 归档时间: |
|
| 查看次数: |
12375 次 |
| 最近记录: |