小编典典

需要帮助来编写在(sql server 2008和另外3个文件中)执行sql脚本的bat文件。

sql

我确定这些问题以前曾被询问过,但找不到明确的说明如何创建批处理文件,因此应将其称为“ Update Database”,此批处理文件应

执行位于不同文件夹中的sql脚本执行另外3个bat文件。

任何快速示例如何做到这一点?

已编辑

我可以这样做吗?

:On Error exit

:r C:\myPath\MasterUpdateDatabase.bat
GO 
SQLCMD -S (Local) -i C:\myPath\InsertUsername.sql

我收到一个错误:

“ GO”未被识别为内部外部命令

感谢您的任何投入


阅读 196

收藏
2021-03-23

共1个答案

小编典典

似乎您正在尝试使用DOS命令来创建一个批处理文件,该批处理文件要么(a)执行其他批处理文件,要么(b)执行SQLCMD以运行sql或sql脚本。

这是几个示例,全部融合为一个。我START/WAIT开关上使用DOS命令,这将使您的原始“主”批处理文件在一个窗口中运行,并在新窗口中执行后续文件或命令。该新窗口将保持打开状态,直到脚本完成并退出。

ECHO可能不需要其中的一些,但脚本暂时会与您交流一些。

@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的地方,在这种情况下,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会中断正在处理的批处理脚本。

2021-03-23