需要帮助来编写执行sql脚本的bat文件(sql server 2008和另外3个文件?
我确定这些已经被问过,但是找不到清晰的指令如何创建一个 批处理文件让我们称之为“更新数据库“这个批处理文件应该需要帮助来编写执行sql脚本的bat文件(sql server 2008和另外3个文件?
执行位于不同的文件夹SQL脚本 执行其他3 BAT文件。
任何简单的例子怎么办呢?决不 由于之前做了很多
EDITED
我可以这样做吗?
:On Error exit
:r C:\myPath\MasterUpdateDatabase.bat
GO
SQLCMD -S (Local) -i C:\myPath\InsertUsername.sql
我得到一个错误:
"GO" is not recognized as internal external command
感谢任何输入
它看起来像你正在尝试使用DOS命令来创建或者(a)执行其他的批处理文件批处理文件或(b)执行SQLCMD以运行sql或sql脚本。
这里有几个例子都汇集成一个。我正在使用DOS命令START
和/WAIT
开关,这将使原始“主”批处理文件在一个窗口中运行,并在新窗口中执行后续文件或命令。该新窗口保持打开状态,直到脚本完成并退出。
某些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,在这种情况下,刚刚从查询返回结果。有一点要注意的是-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
表示什么,但我也没有在开始运行这个/ 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文件。我提供的例子是非常基本的,但希望它能让你走上正确的道路。
OH!请记住,CTRL + C会在进程中分解批处理脚本。
您看到的实际错误是命令行解释器无法识别'GO',因此您可以删除该行。
希望这有助于你:
sqlplus UserName/[email protected] @C:\myPath\InsertUsername.sql
P.S:不要忘了添加命令 “提交”;在SQL文件的末尾(InsertUsername.sql),这个命令为了甲骨文保存在darabase
进行改变这个答案肯定适用于你的目的:
sqlcmd -S localhost -U fdmsusr -P fdmsamho -i "E:\brantst\BranchAtt.sql" -o "E:\brantst\branchlog.txt"
你的回答与提问者已经尝试的内容有什么不同? – 2015-11-18 09:08:52
你宁愿解释为什么你的答案能解决他的问题 – 2015-11-18 09:15:50
你告诉我们,你执行了什么,和错误,但不是**你如何执行它**。 – 2010-09-26 19:11:06
看起来你正在像SQL查询那样处理批处理脚本。语法完全不同。 “:r”是你的函数,它只调用批处理文件。 “GO”是不必要的。您可能有更清晰的方式来创建一些错误处理和多个被调用的命令。从批处理文件调用中,您可能需要使用“START/WAIT”,以便您的原始批处理文件在您从其中调用的那个之前不会完成。你能发布更多的细节吗? – Vinnie 2010-12-27 02:53:20