2013-03-13 65 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本身的工作原理。