需要帮助来编写执行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

感谢任何输入

+0

你告诉我们,你执行了什么,和错误,但不是**你如何执行它**。 – 2010-09-26 19:11:06

+0

看起来你正在像SQL查询那样处理批处理脚本。语法完全不同。 “:r”是你的函数,它只调用批处理文件。 “GO”是不必要的。您可能有更清晰的方式来创建一些错误处理和多个被调用的命令。从批处理文件调用中,您可能需要使用“START/WAIT”,以便您的原始批处理文件在您从其中调用的那个之前不会完成。你能发布更多的细节吗? – Vinnie 2010-12-27 02:53:20

它看起来像你正在尝试使用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"

+0

你的回答与提问者已经尝试的内容有什么不同? – 2015-11-18 09:08:52

+0

你宁愿解释为什么你的答案能解决他的问题 – 2015-11-18 09:15:50