如何使用批处理文件运行多个SQL脚本?

时间:2012-01-13 07:27:42

标签: sql sql-server batch-file sql-scripts

我有一个案例,我有10 + SQL script

我不想一个接一个地运行我的所有脚本。

有没有办法可以在SQL Management studio中连续运行我的所有脚本。

我发现了this帖子。创建批处理文件似乎更容易。

这就是你所需要的:

@echo off
ECHO %USERNAME% started the batch process at %TIME%  >output.txt


for %%f in (*.sql) do (
 (
sqlcmd.exe  -S servername -E   -d databasename -i %%f >>output.txt
)


pause

替换servername和databasename,但似乎无效。

有什么想法吗?

8 个答案:

答案 0 :(得分:9)

你有一个无与伦比的括号。 尝试

对于(* .sql)中的%% f

执行sqlcmd.exe -S servername -E -d databasename -i %% f>> output.txt

我刚将它保存在.cmd文件中,似乎正在运行。

答案 1 :(得分:5)

是的,这是可能的。您可以使用:SQLCMD的命令。

我强烈建议您阅读本文并使用SQLCMD

执行此操作

http://www.mssqltips.com/sqlservertip/1543/using-sqlcmd-to-execute-multiple-sql-server-scripts/

答案 2 :(得分:3)

您可以创建一个存储过程来调用所有脚本。您还可以创建计划计划以自动运行脚本。

http://msdn.microsoft.com/en-us/library/aa174792(v=sql.80).aspx

答案 3 :(得分:2)

这是一个源代码为http://scriptzrunner.codeplex.com/

的开源实用程序

此实用程序是用c#编写的,允许您拖放许多sql文件并开始针对数据库运行它们。

答案 4 :(得分:1)

您可能已经知道这一点,如果不这样做,您发布的脚本将只在安装了SQL Server的计算机上运行。

答案 5 :(得分:0)

一些批处理技巧

cd %~dp0 //use this if you use 'for xxx in', it solved most of my problems 

ECHO %USERNAME% started the batch process at %TIME%  >output.txt


for %%f in (*.sql) do (
(
sqlcmd.exe  -S servername -E -d databasename -i %%f >>output.txt
)
echo %errorlevel%
pause

答案 6 :(得分:0)

您可以使用Batch Compiler加载项用于SMSS,它允许您一次运行多个脚本,创建SQLCMD脚本或将它们合并到* .sql文件中。

答案 7 :(得分:0)

如果要通过批处理程序运行Oracle SQL文件,则下面的代码将很有用。只需复制并更改数据库凭据和数据库名称

@echo off
for %%i in ("%~dp0"*.sql) do echo @"%%~fi" >> "%~dp0all.sql"

echo exit | sqlplus scott/tiger@orcl @"c:\users\all.sql"
pause

基本上,您需要将此批处理文件放在拥有所有SQL文件的文件夹中。它将首先获取目录中的所有sql文件名,并使用sql文件名加载其完整路径。然后,它将写入文件all.sql中,然后sqlplus将调用该all.sql以执行该目录中所有的sql文件。