【发布时间】:2013-02-03 10:03:00
【问题描述】:
链接一些 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
有什么想法吗?
提前致谢。
【问题讨论】:
-
性能会变差。您可能需要考虑在作业/事件上运行的存储过程,该过程使用感兴趣的数据填充临时表。这样,在查询之前就完成了繁重的工作,您现在正在对 1 个数据库而不是多个数据库进行选择。
-
感谢@xQbert 的建议。在我的场景中,我需要在链接服务器之间“单向”同步数据(我知道合并复制可以轻松做到这一点,但在这里我有一个心胸狭窄的网络管理员 =p )。我需要将大约 30 个表从多台服务器同步到一个主服务器(每台服务器几乎需要两分钟的 sql 处理时间)。我会尝试使用临时表。谢谢。
标签: sql sql-server-2008 linked-server multiserver