日期:2014-05-19  浏览次数:20596 次

如何用SQL语句来连接不同台数据库服务器?
如题,
我想在某台机器上写个存储过程,用来统计那些数据库服务器上数据库的大小及备份文件大小.
1.首先,我如何用SQL语句来连接不同台数据库服务器?(就相当于在查询分析器中连接服务器的操作用语句来实现)
2.连接上后,如何用SQL语句查询出磁盘上某路径下该数据库的备份文件大小?并把结果插入表.
3.用SQL语句查询出该磁盘的可用空间,我知道用Exec   master.dbo.xp_fixeddrives,但不知道如何把结果插入一张表?

知道的高手帮忙解答一下吧,谢谢!!!:)

------解决方案--------------------
1.首先,我如何用SQL语句来连接不同台数据库服务器?(就相当于在查询分析器中连接服务器的操作用语句来实现)
sp_addlinkedserver 'lnksvr ', ' ', 'sqloledb ', '192.168.18.33 '
exec sp_addlinkedsrvlogin 'lnksvr ',false,null, 'sa ', '密码 '
2.连接上后,如何用SQL语句查询出磁盘上某路径下该数据库的备份文件大小?并把结果插入表.
create table #t(col varchar(400))
insert #t exec [lnksvr].master..xp_cmdshell 'dir c:\a.txt ' --这里换成实际的文件名和路径
select * from #t

3.用SQL语句查询出该磁盘的可用空间,我知道用Exec master.dbo.xp_fixeddrives,但不知道如何把结果插入一张表?
create table #t(drive varchar(10),可用空间 float)
insert into #t Exec master.dbo.xp_fixeddrives
select * from #t
------解决方案--------------------
To nicebee(小蜜蜂)
很想帮你,不过我也是能力有限,
你要查找的是linkserver上的磁盘可用空间,这个设计到远程存储过程的调用,
本来远程存储过程的调用可以使用openquery,比如
select * from openquery (linkserver, 'master.dbo.sp_help ')
可是,你要调用的是远程“扩展存储过程”,我没有用过,也没有查到相关资料,有哪位高手知道怎么处理。

帮你顶!!!