加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

BAT文件中的SQLCMD实用程序 – 如果语法错误,如何返回ERRORLEVEL

发布时间:2020-12-12 08:23:35 所属栏目:MsSql教程 来源:网络整理
导读:当某些.sql文件包含语法错误时,如何从SQLCMD实用程序获取%ERRORLEVEL%?这些文件创建存储过程.他们不会调用“raiseerror”,但是它们可以让conatin语法错误,我需要终止进程. 但是它总是返回%ERRORLEVEL%为0. 我尝试使用-b,-V和-m(和它们的组合),但是对我来
当某些.sql文件包含语法错误时,如何从SQLCMD实用程序获取%ERRORLEVEL%?这些文件创建存储过程.他们不会调用“raiseerror”,但是它们可以让conatin语法错误,我需要终止进程.
但是它总是返回%ERRORLEVEL%为0.
我尝试使用-b,-V和-m(和它们的组合),但是对我来说没有任何预期的效果.

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

REM process all sql files in "SQLscripts" folder and subfolders
FOR /R "SQLscripts" %%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 …(不,也没有任何%:看到帮助,如果),但我无法得到所需的结果]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读