如题,
我想在某台机器上写个存储过程,用来统计那些数据库服务器上数据库的大小及备份文件大小.
1.首先,我如何用SQL语句来连接不同台数据库服务器?(就相当于在查询分析器中连接服务器的操作用语句来实现)
2.连接上后,如何用SQL语句查询出磁盘上某路径下该数据库的备份文件大小?并把结果插入表.
3.用SQL语句查询出该磁盘的可用空间,我知道用Exec master.dbo.xp_fixeddrives,但不知道如何把结果插入一张表?知道的高手帮忙解答一下吧,谢谢!!!:)
我想在某台机器上写个存储过程,用来统计那些数据库服务器上数据库的大小及备份文件大小.
1.首先,我如何用SQL语句来连接不同台数据库服务器?(就相当于在查询分析器中连接服务器的操作用语句来实现)
2.连接上后,如何用SQL语句查询出磁盘上某路径下该数据库的备份文件大小?并把结果插入表.
3.用SQL语句查询出该磁盘的可用空间,我知道用Exec master.dbo.xp_fixeddrives,但不知道如何把结果插入一张表?知道的高手帮忙解答一下吧,谢谢!!!:)
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
建议用编程语言做成应用程序,用任务计划执行就可以了。
1.查询可用空间:insert into #t Exec master.dbo.xp_fixeddrives
运行结果如果只有C盘的话,显示两列: C 1025, 那我怎么把1025这一列插入表的一个字段
中?
2.查询文件大小:insert #t exec [lnksvr].master..xp_cmdshell 'dir c:\a.txt'
运行结果有一大堆呢,我如果把文件大小拿出来插入表的一个字段?万分感谢!!!!
create table Test
(drive char(20) NULL,
sparesize int NULL)insert into Test(drive,sparesize)
exec master.dbo.xp_fixeddrives--第而个问题解决方法相同
insert into Test(drive,sparesize)
exec master.dbo.xp_fixeddrives这个方法查本机的磁盘空间是没问题的,但是如果我查找的是linkserver上的磁盘可用空间,就会一直在执行,停也停不掉,只能重启服务.
请问该怎么办?
很想帮你,不过我也是能力有限,
你要查找的是linkserver上的磁盘可用空间,这个设计到远程存储过程的调用,
本来远程存储过程的调用可以使用openquery,比如
select * from openquery (linkserver,'master.dbo.sp_help')
可是,你要调用的是远程“扩展存储过程”,我没有用过,也没有查到相关资料,有哪位高手知道怎么处理。帮你顶!!!
非常感谢你的帮助.
对,远程磁盘空间和磁盘上文件大小的查询都会down机,实在是头疼.
其实不管用什么方法,只要能让我远程得到以上数据就好了.
因为每天要检查那么多服务器上的信息,我想做个存储过程自动执行,插入表中,这样也便于统计.