运行目录中的所有SQL文件

我有一些.sql文件,为了应用其他开发人员在SQL Server 2005数据库上所做的更改,我必须运行这些文件。 这些文件按照以下模式命名:

0001 - abc.sql 0002 - abcef.sql 0003 - abc.sql ... 

有没有办法一次运行所有的人?

使用以下命令创build一个.BAT文件:

 for %%G in (*.sql) do sqlcmd /S servername /d databaseName -E -i"%%G" pause 

将这个.BAT文件放在要执行.SQL文件的目录中,双击.BAT文件,就完成了!

使用FOR 。 从命令提示符下:

 c:\>for %f in (*.sql) do sqlcmd /S <servername> /d <dbname> /E /i "%f" 

通过单击management studio中的“查询”>“SQLCMD”模式选项,确保已启用SQLCMD。

  1. 假设在一个文件夹c:\scripts有四个.sql文件( script1.sql,script2.sql,script3.sql,script4.sql )。

  2. 使用以下命令创build主脚本文件(Main.sql):

     :rc:\Scripts\script1.sql :rc:\Scripts\script2.sql :rc:\Scripts\script3.sql :rc:\Scripts\script4.sql 

    将Main.sql保存在c:\ scripts本身中。

  3. 使用以下命令创build一个名为ExecuteScripts.bat的batch file:

     SQLCMD -E -d<YourDatabaseName> -ic:\Scripts\Main.sql PAUSE 

    请记住,要将<YourDatabaseName>replace为要执行脚本的数据库。 例如,如果数据库是“员工”,则命令如下:

     SQLCMD -E -dEmployee -ic:\Scripts\Main.sql PAUSE 
  4. 通过双击执行该batch file。

  1. 在SQL Management Studio中打开一个新的查询,并按如下所示input所有文件

     :rc:\Scripts\script1.sql :rc:\Scripts\script2.sql :rc:\Scripts\script3.sql 
  2. 转到SQL Management Studio上的查询菜单,并确保SQLCMD模式已启用
  3. 点击SQLCMD模式; 文件将被选中灰色如下

     :rc:\Scripts\script1.sql :rc:\Scripts\script2.sql :rc:\Scripts\script3.sql 
  4. 现在执行

你可以使用ApexSQL Propagate 。 这是一个在多个数据库上执行多个脚本的免费工具。 您可以根据需要select尽可能多的脚本,并针对一个或多个数据库(甚至是多个服务器)执行它们。 您可以创build脚本列表并将其保存,然后每次要按创build的顺序执行相同的脚本时,只需select该列表(也可以添加多个脚本列表):

选择脚本

当select脚本和数据库时,它们将显示在主窗口中,您只需单击“Execute”button,所有脚本将按照给定的顺序在选定的数据库上执行:

脚本执行

一般查询

将下面的行保存在名为batch.bat的记事本中,并将其放置在所有脚本文件所在的文件夹中

  for %%G in (*.sql) do sqlcmd /S servername /d databasename -i"%%G" pause 

(* .sql)中的%% G执行sqlcmd / S NFGDDD23432 / d EMPLYEEDB -i“%% G”暂停

有时候,如果login失败,请使用以下代码和用户名密码

 for %%G in (*.sql) do sqlcmd /S SERVERNAME /d DBNAME -U USERNAME -P PASSWORD -i"%%G" pause 

(* .sql)中的%% G执行sqlcmd / S NE8148server / d EMPLYEEDB -U Scott -P tiger -i“%% G”暂停

在脚本文件所在的文件夹内创buildbat文件后,只需单击bat文件即可执行脚本

我在C#中编写了一个开源实用程序 ,允许您拖放许多SQL文件并开始在数据库上运行它们。

该实用程序具有以下function:

  • 拖放脚本文件
  • 运行脚本文件的目录
  • Sql脚本在执行期间放出消息
  • 脚本通过或失败,绿色和红色(运行黄色)
  • 停止错误选项
  • 打开错误选项的脚本
  • 按照每个脚本的运行时间运行报表
  • 总持续时间
  • testing数据库连接
  • Asynchronus
  • .Net 4&SQL 2008testing
  • 单个exe文件
  • 随时杀死连接

我知道你可以使用osql或sqlcmd命令来执行多个sql文件。 缺点是你将不得不为这两个命令创build一个脚本。

使用SQLCMD执行多个SQL Server脚本

OSQL(这是为SQL Server 2000)

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

您可以创build一个调用所有其他脚本的脚本。

将以下内容放入batch file中:

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

运行该batch file时,将在batch file所在的同一目录中创build一个名为all.sql的新脚本。 它将在batch file所在的同一目录中查找扩展名为.sql所有文件。

然后,您可以使用sqlplus user/pwd @all.sql运行所有脚本(或者在创buildall.sql脚本之后扩展batch file以调用sqlplus

为了执行相同目录下的每个SQL文件,使用下面的命令:

 ls | awk '{print "@"$0}' > all.sql 

这个命令将创build一个单独的SQL文件,其中包含“@”所附目录中每个SQL文件的名称。

在创buildall.sql之后,只需用SQLPlus执行all.sql ,这将执行all.sql中的每个sql文件。