2011-06-14 57 views
3

我有大约100个.sql文件创建存储过程。我想立即执行它们全部。在SQL Server中一次执行几个.sql文件的方法

它们包含在名为Stored Procedures的文件夹中。 Stored Procedures文件夹中还有其他几个名称不同的文件夹 - 表格名称。

有没有办法一次执行所有这些文件?

回答

2

这里是另一种工具Sql_Server_Script_Executor

有没有一次执行所有这些 文件的方法?

*您可以添加文件夹,所有的文件将出现在列表中。点击执行按钮并完成!!!!!!!!!!!!! *

它包含三种交易模式。

1. Execute scripts within one transaction 
2. Execute scripts on separate transaction 
3. No transaction 

和更多的功能,请通过它。

enter image description here

+0

我结束了使用这个。它甚至还具有创建批处理命令的功能,所以您可以从命令行运行它。 – Omar 2011-06-14 15:08:57

+0

太棒了! – Pankaj 2011-06-14 15:09:45

1

不是立即 - 但一切都在一个 - 去尝试像SSW Deploy之一的工具。

enter image description here

+0

听起来不错,但它不是免费的。 – Omar 2011-06-14 15:19:23

+0

@tou:你没有要求免费 - 而且好的软件的成本 - 但它的价格是值得的 - SQL Deploy **是“”值得的价格 - 多次:-) – 2011-06-14 15:38:39

3

你可以打开一个PowerShell实例并运行类似下面的命令:

Get-ChildItem ".\Stored Procedures\*.sql" | ForEach-Object { sqlcmd -S ServerName -d DatabaseName -E -i $_.FullName } 

这将让你在存储过程目录中的每个.sql文件,并一个接一个,通它到sqlcmd.exe程序。要获得有关sqlcmd参数的更多详细信息,您可以运行sqlcmd /?

要让它通过子目录递归的,你可以用筛选参数沿-Recurse参数适用于Get-ChildItem

Get-ChildItem '.\Stored Procedures' -Filter *.sql -Recurse | ForEach-Object { sqlcmd -S ServerName -d DatabaseName -E -i $_.FullName } 
+0

有没有办法让它递归?我的意思是,要获取所有的SQL脚本,将insede文件夹放入'Stored Procedures'文件夹。 – Omar 2011-06-14 15:20:44

+0

@tou - 为了缓解您可以将-Recurse参数添加到Get-ChildItem cmdlet。我会更新答案。 – 2011-06-14 15:25:05

+0

多数民众赞成在很好,但我怎么能确保脚本按正确的顺序执行(表第一,视图第二...功能,程序,触发器等)? – Ice 2011-06-14 15:34:07