2010-07-08 103 views

回答

8

你可以使用动态SQL:

declare @query varchar(max) 
set @query = '' 

select @query = @query + 'UPDATE ' + name + 
      '.dbo.YourTable set value = 1 where id = 2; ' 
from master.sys.databases 
where name <> 'master' 

exec (@query) 
+0

谢谢Andomar。我认为这比'sp_MSForEachDB'存储过程更适合我的情况,因为我可能需要更加自定义每个数据库。使用这种方法,我可以创建一个循环和各种IF条件来获得我需要的结果。谢谢。 – Curt 2010-07-09 08:41:58

3

有一个未公开的存储过程sp_MSForEachDB将执行SQL为每个数据库。

EXEC sp_msforeachdb 'PRINT ''?''' 

The?是数据库名称。

11
EXEC sp_MSForEachDB ' Use ?; UPDATE ?.dbo.MyTable SET MyValue=999 ' 
相关问题