循环访问服务器上的数据库,并更新数据

时间:2010-07-08 17:28:18

标签: sql-server-2005 tsql loops

我有一个包含多个数据库的服务器。我需要遍历这些数据库并在每个数据库中的一个表中更改一个记录中的值。怎么办呢?

3 个答案:

答案 0 :(得分:12)

EXEC sp_MSForEachDB ' Use ?; UPDATE ?.dbo.MyTable SET MyValue=999  '

答案 1 :(得分: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)

答案 2 :(得分:3)

有一个未记录的存储过程sp_MSForEachDB,它将为每个数据库执行SQL。

EXEC sp_msforeachdb 'PRINT ''?'''

?是数据库名称。