2

の各サーバーの特定のデータベースにある特定のテーブルに対して1回実行されるクエリを作成しようとしていますsys.server

それぞれについてserver.database.dbo.table内容を知りたいです。

だから私が必要なのは次のようなものです:

declare @numrows int = (select count(*) from sys.servers)
declare @i int = 1

while @i <= @numrows
BEGIN
declare @servername varchar(max) = (select servernaam from #servers where rij = @i)

select * from @servername.DATABASE.DBO.TABLE

set @i = @i+1

END

ただし、@servernamein@servername.DATABASE.DBO.TABLEは機能していないようです。

提案?私と一緒に考えてくれてありがとう。

4

1 に答える 1

7

動的SQLを使用する必要があります。

declare @numrows int = (select count(*) from sys.servers)
declare @i int = 1
declare @Sql(1000)
declare @servername varchar(max)

while @i <= @numrows
BEGIN
select @servername = servernaam 
from #servers where rij = @i

set @Sql = 'select * from '+@servername+'.DATABASE.DBO.TABLE'
exec(@Sql)

set @i = @i+1

END

execに関する詳細情報は次のとおりです

于 2012-09-20T08:42:27.900 に答える