2011-06-14 80 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