我有一个包含多个数据库的服务器。我需要遍历这些数据库并在每个数据库中的一个表中更改一个记录中的值。怎么办呢?
答案 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 ''?'''
?是数据库名称。