链接一些 SQL Server 2008 服务器/实例后,我想对这些服务器进行更通用的查询。我知道我必须像这样指定查询的命运:
select *
from [SRV\INSTANCE].dbname.dbo.foo
但是,我会针对多个链接服务器运行此查询。我还知道这个 select 语句返回的正是SRV\INSTANCE
我需要:
select ss.name
from sys.servers ss
where ss.server_id > 0
这一项,返回全部servers\instances
从我想要查询的地方到。
在这种情况下,所有数据库都具有相同的结构,所以我想做这样的事情:
select *
from [select ss.name from sys.servers ss where ss.server_id > 0].DBNAME.dbo.foo
有任何想法吗?
提前致谢。
您可以即时动态创建 SQL 语句,然后运行该命令。在这种情况下,在 @dml 变量中使用 help += 运算符动态创建整个命令
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)