当某些.sql文件包含语法错误时,如何从SQLCMD实用程序获取%ERRORLEVEL%?这些文件创建存储过程.他们不会调用“raiseerror”,但是它们可以让conatin语法错误,我需要终止进程.
但是它总是返回%ERRORLEVEL%为0.
我尝试使用-b,-V和-m(和它们的组合),但是对我来说没有任何预期的效果.
但是它总是返回%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% )
解决方法
你需要-b开关,但是与enabledelayedexpansion一起使用,这样可以使用!errorlevel!在循环中并获得预期的结果.
在执行sqlcmd之前,将setlocal enabledelayedexpansion放在任何地方,最好在批处理的开始或循环之前.还要注意使用感叹号(!),而不是百分号(%),表示使用延迟扩展.
[我也测试了如果不是错误级别0 …(不,也没有任何%:看到帮助,如果),但我无法得到所需的结果]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。