cez*_*ann 4 sql linked-server sql-server-2008 multiserver
链接一些 SQL Server 2008 服务器/实例后,我想对这些服务器进行更通用的查询。我知道我必须像这样指定查询的命运:
select *
from [SRV\INSTANCE].dbname.dbo.foo
Run Code Online (Sandbox Code Playgroud)
但是,我会针对多个链接服务器运行此查询。我也知道这个 select 语句返回的正是SRV\INSTANCE我需要的:
select ss.name
from sys.servers ss
where ss.server_id > 0
Run Code Online (Sandbox Code Playgroud)
这个,servers\instances从我想要查询的地方返回所有内容。
在这种情况下,所有数据库都具有相同的结构,所以我想做这样的事情:
select *
from [select ss.name from sys.servers ss where ss.server_id > 0].DBNAME.dbo.foo
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
提前致谢。
您可以动态地动态创建 SQL 语句,然后运行该命令。在带有 help += 运算符的 @dml 变量中的这种情况下,动态创建了整个命令
DECLARE @dml nvarchar(max) = N''
SELECT @dml += 'UNION ALL SELECT * FROM ' + QUOTENAME(ss.name) +
'.[DBNAME].[dbo].foo '
FROM sys.servers ss
WHERE ss.server_id > 0
SELECT @dml = STUFF(@dml, 1, 10, '')
EXEC sp_executesql @dml
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5992 次 |
| 最近记录: |