看起来您正在尝试使用 DOS 命令来创建一个批处理文件,该文件要么 (a) 执行其他批处理文件,要么 (b) 执行 SQLCMD 以运行 sql 或 sql 脚本。
这里有几个例子都合二为一。我正在使用START
带有/WAIT
开关的 DOS 命令,这将使您的原始“主”批处理文件在一个窗口中运行,并在新窗口中执行后续文件或命令。该新窗口保持打开状态,直到脚本完成并退出。
有些ECHO
s 可能不是必需的,但脚本现在会稍微回复您。
@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 会破坏一个批处理脚本。