Hen*_*rov 2 sql t-sql sql-server dynamic-sql sql-server-2008
我正在尝试创建一个查询,该查询将针对每个服务器中的特定数据库中的特定表执行一次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
Run Code Online (Sandbox Code Playgroud)
但是,@servernamein @servername.DATABASE.DBO.TABLE似乎不起作用.
建议?谢谢你和我一起思考.
你必须使用动态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
Run Code Online (Sandbox Code Playgroud)
这是关于exec的更多信息.
| 归档时间: |
|
| 查看次数: |
2065 次 |
| 最近记录: |