在一个文件夹中运行一堆SQL文件

时间:2012-05-16 19:09:14

标签: sql-server ssms

我在一个文件夹中有一堆脚本,我必须按顺序运行 。我只是在SSMS中打开它并逐个执行。我必须等待其中一个完成然后运行第二个。

我有没有办法在SSMS中创建一个批处理脚本或脚本(如果可能的话),它将逐个浏览文件?这样可以节省我的时间,因为我可以在脚本运行时执行其他操作并防止出错(大多数都依赖于连续创建的临时表)。

我认为使用sqlcmd的批处理脚本是我正在寻找的,但不知道如何完成此任务。

谢谢。

1 个答案:

答案 0 :(得分:2)

很容易将批处理文件放在一起。将类似下面的内容放入文本文件中,但使用.bat结束文件,例如'ExecuteMyScripts.bat'

Sqlcmd采用各种参数但主要是-S用于服务器实例,-d用于数据库,-i用于输入文件,即用于SQL文件,-U用于用户,-P用于密码,-o用于输出文件。观察字母的情况。

打开记事本并添加以下内容:

sqlcmd -S mysqlserver -d mydb -U sa -P pass1 -i "c:\script1.sql" -o "c:\script1log.txt"
IF ERRORLEVEL 1 goto :eof
sqlcmd -S mysqlserver -d mydb -U sa -P pass1 -i "c:\script2.sql" -o "c:\script2log.txt"
IF ERRORLEVEL 1 goto :eof
sqlcmd -S mysqlserver -d mydb -U sa -P pass1 -i "c:\scripr3.sql" -o "c:\script3log.txt"

将文件另存为ExecuteMyScripts.bat。 双击该文件,两个脚本都将被执行。

如果发现错误,在每次sqlcmd调用后添加'IF ERRORLEVEL 1 goto:eof'将跳转到脚本的末尾。

此处的完整用法,http://msdn.microsoft.com/en-us/library/ms162773.aspx