我有许多.sql文件,我必须运行这些文件,以便应用其他开发人员在SQL Server 2005数据库上进行的更改。这些文件是根据以下模式命名的:

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

有没有办法一口气运行所有这些?

有帮助吗?

解决方案

使用以下命令创建.bat文件:

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

将此.bat文件放入要执行.sql文件的目录中,双击.bat文件,然后完成!

其他提示

利用 为了. 。从命令提示符:

c:\>for %f in (*.sql) do sqlcmd /S <servername> /d <dbname> /E /i "%f"
  1. 在SQL Management Studio中打开一个新查询,并键入所有文件如下

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

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

确保通过单击管理工作室中的查询> SQLCMD模式选项,可以启用SQLCMD。

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

  2. 创建一个主脚本文件(main.sql),其中以下内容:

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
    :r c:\Scripts\script4.sql
    

    将main.sql保存在c:脚本本身中。

  3. 创建一个名称的批处理文件 ExecuteScripts.bat 以下内容:

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

    记住要替换 <YourDatabaseName> 使用数据库,您要执行脚本。例如,如果数据库为“员工”,则命令将是以下内容:

    SQLCMD -E -dEmployee -ic:\Scripts\Main.sql
    PAUSE
    
  4. 通过双击相同来执行批处理文件。

您可以使用 ApexSQL传播. 。它是一个免费的工具,可以在多个数据库上执行多个脚本。您可以根据需要选择尽可能多的脚本,并根据一个或多个数据库(甚至多个服务器)执行它们。您可以创建脚本列表并保存它,然后每次要在创建顺序中执行相同的脚本时只需选择该列表(还可以添加多个脚本列表):

Select scripts

When scripts and databases are selected, they will be shown in the main window and all you have to do is to click the “Execute” button and all scripts will be executed on selected databases in the given order:

Scripts execution

一般查询

将下线保存在记事下的记事本中 batch.bat 并将所有脚本文件都放在文件夹中

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

例子

对于(*.sql)do do sqlcmd /s for %% g NFGDDD23432 /d EmplyeedB - 我“ %% g”停顿

有时如果登录失败,请使用以下代码与 用户名密码

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

对于(*.sql)do do sqlcmd /s for %% g NE8148Server /d EmplyeedB -u 斯科特 -p 老虎 - 我“ %% g”停顿

在脚本文件所在的文件夹中创建蝙蝠文件后,只需单击bat文件,您的脚本将被执行

我写 开源实用程序 在C#中,您可以拖放许多SQL文件并开始使用数据库运行它们。

该实用程序具有以下功能:

  • 拖放脚本文件
  • 运行脚本文件的目录
  • SQL脚本在执行过程中放出消息
  • 脚本传递或失败的绿色和红色(黄色用于运行)
  • 停止错误选项
  • 打开错误选项上的脚本
  • 运行报告,每个脚本花费的时间
  • 总持续时间
  • 测试数据库连接
  • 异步
  • .NET 4并通过SQL 2008进行了测试
  • 单个EXE文件
  • 随时杀死连接

我知道您可以使用OSQL或SQLCMD命令执行多个SQL文件。缺点是您必须为两个命令创建一个脚本。

使用SQLCMD执行多个SQL Server脚本

OSQL(这是针对SQL Server 2000)

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

@echo off
cd C:\Program Files (x86)\MySQL\MySQL Workbench 6.0 CE

for %%a in (D:\abc\*.sql) do (
echo %%a
mysql --host=ip --port=3306 --user=uid--password=ped < %%a
)

步骤1:上面的行复制到Note Pad中,将其保存为BAT。

步骤2:在SQL Server中执行的查询中所有SQL文件中的D驱动器ABC文件夹中。

步骤3:提供您的IP,用户ID和密码。

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

将以下内容放入批处理文件中:

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

当您运行该批处理文件时,它将创建一个名为的新脚本 all.sql 在批处理文件所在的同一目录中。它将查找带有扩展名的所有文件 .sql 在批处理文件所在的同一目录中。

然后,您可以使用所有脚本 sqlplus user/pwd @all.sql (或扩展批处理文件 sqlplus 创建 all.sql 脚本)

在同一目录上执行每个SQLFILE,请使用以下命令:

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

此命令将创建一个单个SQL文件,其中包含“@”目录中每个SQL文件的名称。

之后 all.sql 创建只需执行 all.sql 使用SQLPlus,这将执行每个SQL文件 all.sql.

如果您可以使用Interactive SQL:

1-使用此代码创建.bat文件:

@ECHO OFF ECHO
for %%G in (*.sql) do dbisql -c "uid=dba;pwd=XXXXXXXX;ServerName=INSERT-DB-NAME-HERE" %%G
pause

2-更改PWD和Servername。

3-将.bat文件放入包含.SQL文件的文件夹中并运行它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top