跨数据库查询跨两个不同的2008年MS SQL Server上的数据库是否可能?
如果是这样,在MS SQL中需要做什么configuration? 另外,有人可以告诉我一个示例查询?
范围蠕变:
连接两台服务器时:
这被称为分布式查询,这是相当普遍的。 链接服务器是最常用,最简单的方法来做你所描述的; 如果这不适合你,你可以尝试OPENQUERY或OPENROWSET,但你可能不需要。 其他人已经介绍了如何创build链接服务器,所以我不会详细讨论。
使用链接服务器的查询可能会影响性能,但整体而言,服务器的性能不会降低。 由于您的服务器在地理上是分散的,所以性能受到的影响要大于在同一个LAN上。 你必须尝试看看性能是否可以接受,但假设远程服务器的响应时间不错,你可能会好起来的。
使用链接服务器时要记住的最重要的事情是尽可能保持从远程服务器返回的结果集。 SQL Server不提供两个服务器之间的活动链接,以便在不同服务器上的对象之间进行“实时”连接,就像当所有服务器位于同一台服务器上时一样。 它所做的是将分布式查询拆分成可以在远程服务器上独立运行的部分,然后将结果返回给调用(本地)服务器并完成作业。 这意味着任何涉及多个服务器的任何事情 – 连接,条件,计算等都必须保存在本地服务器上,并且任何需要支持的数据都必须被带回。 举一个简单的例子,如果远程服务器上的10,000,000行表连接到本地服务器上的15行表,SQL Server将从远程服务器返回所有10,000,000行以执行连接! 不用说,这会造成显着的性能下降,特别是在连接速度较慢的情况下。 使用估计的执行计划来validation远程查询; 使用诸如派生列和CTE之类的东西“显式”创build可批量传递到远程服务器的primefaces查询; 如果你看到一个严重的问题,不要害怕把你的查询分解成单独的查询来强制它返回一个小的结果集。
希望这可以帮助!
是的,你可以用Linked服务器 。
SELECT * FROM SERVER1.DBO.DB1.TABLE1
警告:我是开发者,而不是dba–我的观点可能会有所不同; p
configuration和如何: 链接服务器和4部分标识符
但是, 如果你是一个棘手的问题, 我最后一个DBA团队热衷于将这种“可憎”减到最less。 我相信他们有很好的DBA理由。 碰巧,从开发angular度来看,我完全同意维护/可pipe理性。
当我为我的组织创build链接服务器时,我总是映射所有login(“对于未在上面列表中定义的login,连接将:不能创build” – gui中链接服务器安全部分中的第一个单选button)。
我有这个抱怨,但从我看来,当我明确地映射login我知道谁是从起始服务器到目标服务器。 有趣的是,我从来没有审计员询问关联的服务器。