首页 > 解决方案 > 查询 SQL 服务器组中的单个服务器

问题描述

我有 3 个数据库托管在 3 台不同的服务器上,所有这些服务器都有不同的数据和结构。我需要执行一个查询,该查询将从所有三个表的各个表中提取数据。

我已经将三台服务器注册到一个服务器组中,并且我已经确认所有连接都正常工作。

这是我面临的问题的一个例子。对于此查询的第一部分,我需要从 DB1 中的“应用程序”表中检索记录列表,因此我编写:

SELECT * FROM [DB1].[dbo].[Application]

我知道此查询部分有效,因为它开始从正确的表中返回结果。问题是我没有指定 DB1 所在的服务器,所以一旦查询完成对 DB1.dbo.Application 的查询,它就会在下一个服务器上查找相同的数据库和表。数据库和表在其他服务器上不存在,因此查询失败。

那么如何指定要在其上运行查询的服务器呢?我试过[server_name].[DB1].[dbo].[Application]了,但它仍然在所有这些上运行查询。

标签: sqlsql-server

解决方案


服务器组用于维护目的,您需要使用的是链接服务器

例如,在其中一台服务器上SERVER1,您将需要设置两个链接服务器 - 一个到SERVER2,一个到SERVER3

然后SERVER1,您将能够在正常查询窗口中使用四部分名称查询其他服务器:

SELECT * FROM DatabaseName.dbo.Table1;
SELECT * FROM SERVER2.DatabaseName.dbo.Table2;
SELECT * FROM SERVER3.DatabaseName.dbo.Table3;

您还可以在 JOIN 等中使用远程服务器中的表,就好像它们在本地服务器上一样,远程服务器甚至不需要运行 SQL Server——它们可以是 Oracle、MYSQL 等。

但请注意,远程服务器速度很慢,您可能会遇到大型数据集


推荐阅读