我在 Windows 服务器企业系统 SP2 上运行 DOS 6.0.6002。SQL Server 2008 R2 (10.50.4000) 我在 DOS 中有一个主控制程序。我正在通过 sqlcmd 调用一个 sql 程序。简化版本如下所示:
set sqlsvr=myServer
set logfile=logfile.txt
sqlcmd -S %sqlsvr% -d myDB -i import_some_stuff.sql > "%logfile%" 2>&1
echo error level = %ERRORLEVEL%
我需要这个程序非常健壮。它必须每天针对大量文件和表运行。如果它失败了,我需要抓住它并通知系统管理员。现在,抓住它。
因此,为了测试这一点,我尝试了以下测试:
1)将文件重命名为不存在的文件。结果:它返回并且错误级别为 1(即它捕获了错误!)太棒了!
2)在sql程序的前面输入一些语法垃圾。结果:它在日志文件中打印错误消息,但它没有返回错误(因此 %ERRORLEVEL% 中的返回值为零。这对我来说似乎令人难以置信。我错过了什么?