2013-03-13 66 views
1

我有一個很長的SQL腳本,我想運行一個服務器上的每個數據庫。什麼是最好的方式來做到這一點?爲每個數據庫運行長SQL腳本

我發現這個在我的研究:

EXEC sp_msforeachdb " 
IF  '?'  IN ('lib1','lib2','lib3') 

BEGIN 
     use ?; 
     exec 'my_sp_long_sql_script' 
END 
" 

我嘗試過,但它需要我在創建每個庫,哪種擊敗循環的目的SP。或者我該如何自動爲每個庫創建一個sp?

我想要做的就是爲我的每個數據庫運行我的long_sql_script。

+0

您正在運行腳本(.sql文件)還是執行存儲過程?類似的問題已經被問過[很多次](http://stackoverflow.com/search?q=sql+server+script+multiple+databases);我個人會寫一個小的外部批處理文件或腳本來執行此操作([SQLCMD scripting variables](http://msdn.microsoft.com/en-us/library/ms188714(v = sql.100).aspx))有用)。如果這是一個部署問題,那麼你可能更喜歡在你的構建/部署過程中構建一些東西。 – Pondlife 2013-03-13 16:27:28

回答

1

使用存儲過程的完全限定名稱而不是其相對名稱,可以從任何定義的名稱中檢索它。這就是SQL Server本身的工作原理。