您似乎正在尝试使用 DOS 命令创建一个批处理文件,该文件要么 (a) 执行其他批处理文件,要么 (b) 执行 SQLCMD 以运行 sql 或 sql 脚本。
这里有几个例子全部合二为一。我正在使用带有/WAIT 开关的DOS 命令START,这将使您原来的“主”批处理文件在一个窗口中运行,并在新窗口中执行后续文件或命令。该新窗口会一直打开,直到脚本完成并退出。
一些ECHOs 可能不是必需的,但脚本现在会稍微回复您。
@echo off
所以,从某种意义上说,这非常简单,您只是在运行脚本。如果您的 script1.bat 有断点,您可以将错误返回到主脚本并立即结束。我不清楚这是否是您需要主脚本来做的事情。
echo Starting Database Update.
echo.
echo Excuting Script 1
echo.
start /wait C:\path\to\your\script1.bat
echo If there was a problem, break here.
Pause
echo Excuting Script 2
echo.
start /wait C:\path\to\your\script2.bat
echo If there was a problem, break here.
Pause
这里是使用相同的 START /WAIT 运行 SQLCMD 的地方,在这种情况下,它只返回查询的结果。这里要注意的一件事是-Q(大写)运行查询并退出。如果您使用-q(小写),它将运行查询并在 SQLCMD 中打开等待另一个查询。
echo.
echo Running SQLCMD: "select top 100 * from sys.objects"
start /wait sqlcmd -S (local) -Q "select top 100 * from sys.objects"
这就是运行 sql 脚本的方式,这就是 -i 所表示的,但我也没有像之前那样在 START /WAIT 中运行它。不是你必须这样做,但我想展示这两个例子。这还表明,如果您的脚本返回错误,-b 将结束批处理,这在您运行多个依赖于前者成功的脚本时很有用。
echo.
echo Running SQLCMD from an (-i)nput file:
sqlcmd -S (local) -i C:\path\to\your\script.sql -b
echo.
echo Update Complete.
pause
End
所以,我假设您正在寻找使用 SQLCMD 的 .bat 或 .cmd 文件。我提供的示例非常基本,但希望它能让您走上正确的道路。
哦!记住 CTRL+C 会中断一个批处理脚本。