如何加入多台服务器的更新结果集

Ant*_*nto 5 sql-server-2008 sql-server

我有 4 个不同的服务器,我想在一个输出中获得所有这些服务器的可用磁盘空间。
使用 xp_fixeddrives 我们将获得每个驱动器中的可用空间。

不可能进入所有服务器并按上述方式检查它。所以我试图执行一次。

例如一台服务器的结果集如下

drive   free_mb
C       1816
D       2553
E       2882
F       6247
G       16936
H       7281
I       2395
Run Code Online (Sandbox Code Playgroud)

由于我是 sql 的初学者,请帮我解决这个问题。

Mik*_*son 3

像这样的事情应该这样做:

create table #Tmp
(
  Drive char(1),
  MBFree int,
  ServerName varchar(50)
)

insert into #Tmp(Drive, MBFree) exec Server1.master.dbo.xp_fixeddrives
update #Tmp set ServerName = 'Server1' where ServerName is null

insert into #Tmp(Drive, MBFree) exec Server2.master.dbo.xp_fixeddrives
update #Tmp set ServerName = 'Server2' where ServerName is null

select *
from #Tmp
order by ServerName, Drive

drop table #Tmp
Run Code Online (Sandbox Code Playgroud)

结果:

Drive MBFree      ServerName
----- ----------- --------------------------------------------------
C     57859       Server1
D     384636      Server1
F     82353       Server1
C     4963        Server2
E     10605       Server2
Run Code Online (Sandbox Code Playgroud)

Server1并且Server2必须是您执行上述语句的服务器中的链接服务器。