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

问题描述 投票:0回答:1

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

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

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

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

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

因此,如何指定要在其上运行查询的服务器?我已经尝试过[server_name].[DB1].[dbo].[Application],但它仍然对所有这些都运行查询。

sql sql-server ssms
1个回答
0
投票

[通常,您在查询服务器组时希望合并结果,但是在这种情况下,您可以通过以这种方式编写查询来解决此问题:

if(@@servername = 'server01')
begin
    select count(*) from DB1.dbo.Application
end

if(@@servername = 'server02')
begin 
    select count(*) from DB2.dbo.OtherTable
end

这将返回错误,因为数据库返回了不同的结果。为了避免这种情况,请在“工具/选项”中更改此设置:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.