查询SQL server组中的单个服务器

查询SQL server组中的单个服务器,sql,sql-server,Sql,Sql Server,我有3个数据库托管在3个不同的服务器上,所有这些服务器都有不同的数据和结构。我需要执行一个查询,从所有三个表的不同表中提取数据 我已将这三台服务器注册到一个服务器组中,并已确认所有连接都正常工作 这是我面临的问题的一个例子。对于此查询的第一部分,我需要从DB1中的“Applications”表中检索记录列表,因此我写: SELECT * FROM [DB1].[dbo].[Application] 我知道这个查询部分是有效的,因为它开始从正确的表返回结果。问题是,我没有指定DB1所在的服务器,

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

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

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

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


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

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

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

然后,您可以在SERVER1的普通查询窗口中使用由四部分组成的名称查询其他服务器:

SELECT * FROM DatabaseName.dbo.Table1;
SELECT * FROM SERVER2.DatabaseName.dbo.Table2;
SELECT * FROM SERVER3.DatabaseName.dbo.Table3;
您还可以在联接等中使用来自远程服务器的表,就像它们在本地服务器上一样,远程服务器甚至不需要运行SQL server—它们可以是Oracle、MYSQL等


但是请注意,您可能会在处理大型数据集时遇到困难

这就是我最后要做的。工作得很有魅力。