Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 循环服务器上的数据库,并更新数据_Sql Server 2005_Tsql_Loops - Fatal编程技术网

Sql server 2005 循环服务器上的数据库,并更新数据

Sql server 2005 循环服务器上的数据库,并更新数据,sql-server-2005,tsql,loops,Sql Server 2005,Tsql,Loops,我有一个带有多个数据库的服务器。我需要遍历这些数据库,并在每个数据库的一个记录、一个表中更改一个值。如何做到这一点?您可以使用动态SQL: declare @query varchar(max) set @query = '' select @query = @query + 'UPDATE ' + name + '.dbo.YourTable set value = 1 where id = 2; ' from master.sys.databases wh

我有一个带有多个数据库的服务器。我需要遍历这些数据库,并在每个数据库的一个记录、一个表中更改一个值。如何做到这一点?

您可以使用动态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)
declare@query varchar(最大值)
设置@query=''
选择@query=@query+'UPDATE'+name+
'.dbo.YourTable set value=1,其中id=2;'
从master.sys.databases
“主人”的名字在哪里
exec(@query)

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

EXEC sp_msforeachdb 'PRINT ''?'''

那个?是数据库名称。

谢谢Andromar。我认为这比“sp_MSForEachDB”存储过程更适合我的情况,因为我可能需要对每个数据库进行更多的自定义。使用这种方法,我可以创建一个循环和各种IF条件,以获得所需的结果。谢谢
EXEC sp_MSForEachDB ' Use ?; UPDATE ?.dbo.MyTable SET MyValue=999  '