K.A*_*.D. 112 sql sql-server batch-processing
我有一些.sql文件,我必须运行这些文件才能在SQL Server 2005数据库上应用其他开发人员所做的更改.文件根据以下模式命名:
0001 - abc.sql
0002 - abcef.sql
0003 - abc.sql
...
Run Code Online (Sandbox Code Playgroud)
有没有办法一次性运行所有这些?
小智 136
使用以下命令创建.BAT文件:
for %%G in (*.sql) do sqlcmd /S servername /d databaseName -E -i"%%G"
pause
Run Code Online (Sandbox Code Playgroud)
将此.BAT文件放在要从中执行.SQL文件的目录中,双击.BAT文件即可完成!
Rem*_*anu 69
使用FOR.从命令提示符:
c:\>for %f in (*.sql) do sqlcmd /S <servername> /d <dbname> /E /i "%f"
Run Code Online (Sandbox Code Playgroud)
小智 22
在SQL Management Studio中打开一个新查询并键入所有文件,如下所示
:r c:\Scripts\script1.sql
:r c:\Scripts\script2.sql
:r c:\Scripts\script3.sql
Run Code Online (Sandbox Code Playgroud)点击SQLCMD模式; 文件将以灰色选择,如下所示
:r c:\Scripts\script1.sql
:r c:\Scripts\script2.sql
:r c:\Scripts\script3.sql
Run Code Online (Sandbox Code Playgroud)Ash*_*pta 20
通过单击管理工作室中的"查询">"SQLCMD模式"选项,确保已启用SQLCMD.
假设您script1.sql,script2.sql,script3.sql,script4.sql在文件夹中有四个.sql文件()c:\scripts.
使用以下命令创建主脚本文件(Main.sql):
:r c:\Scripts\script1.sql
:r c:\Scripts\script2.sql
:r c:\Scripts\script3.sql
:r c:\Scripts\script4.sql
Run Code Online (Sandbox Code Playgroud)
将Main.sql保存在c:\ scripts本身中.
创建一个ExecuteScripts.bat使用以下命名的批处理文件:
SQLCMD -E -d<YourDatabaseName> -ic:\Scripts\Main.sql
PAUSE
Run Code Online (Sandbox Code Playgroud)
请记住替换<YourDatabaseName>要执行脚本的数据库.例如,如果数据库是"Employee",则命令如下:
SQLCMD -E -dEmployee -ic:\Scripts\Main.sql
PAUSE
Run Code Online (Sandbox Code Playgroud)双击批处理文件执行批处理文件.
小智 12
我发现的最简单的方法包括以下步骤(唯一的要求是它必须在 Win7+ 中):
听起来很长,但实际上非常快..(即使是最小的步骤,听起来也很长)
您可以使用ApexSQL Propagate.它是一个免费工具,可在多个数据库上执行多个脚本.您可以根据需要选择任意数量的脚本,并针对一个或多个数据库(甚至多个服务器)执行它们.您可以创建脚本列表并保存它,然后只需在每次要按创建的顺序执行相同脚本时选择该列表(也可以添加多个脚本列表):
选择脚本和数据库后,它们将显示在主窗口中,您只需单击"执行"按钮,所有脚本将按给定顺序在选定的数据库上执行:
一般查询
将以下行保存在记事本中,名称为batch.bat, 并放在所有脚本文件所在的文件夹中
for %%G in (*.sql) do sqlcmd /S servername /d databasename -i"%%G"
pause
Run Code Online (Sandbox Code Playgroud)
例
对于(*.sql)中的%% G执行sqlcmd/S NFGDDD23432/d EMPLYEEDB -i"%% G"暂停
有时如果登录失败,请使用以下代码和用户名和密码
for %%G in (*.sql) do sqlcmd /S SERVERNAME /d DBNAME -U USERNAME -P PASSWORD -i"%%G"
pause
Run Code Online (Sandbox Code Playgroud)
对于(*.sql)中的%% G执行sqlcmd/S NE8148server /d EMPLYEEDB -U Scott -P tiger -i"%% G"暂停
在脚本文件所在的文件夹中创建bat文件后,只需单击将执行脚本的bat文件