日期:2014-05-18  浏览次数:20476 次

数据库名是参数的问题?
大家好,我现在要做个监控服务器磁盘空间和数据库日志大小的程序,我们那有几十个服务器   ,没办法   人工看不过来
在写存储过程的时候   数据库名   我想用参数
declare     @database       sysname      
set   @database= ' '
select   *,size*8/1024   from   @database.dbo.sysfiles

可是这样老是通不过,请问数据库名是参数的为什么不能这样用呢   ?该怎么用呢?
还有
exec   master.dbo.xp_fixeddrives       这个命令能购返回磁盘的剩余空间,可是返回的数据没法取出来啊  
我用insetrt   into   #temp   exec   master.dbo.xp_fixeddrives       这样不能插入啊,那位朋友会啊?谢谢了

------解决方案--------------------
使用動態SQL語句


declare @database sysname
set @database= ' '
EXEC( 'select *,size*8/1024 from ' + @database + '.dbo.sysfiles ')
------解决方案--------------------
楼上都说了,监控服务器磁盘空间和数据库日志大小是准备空间不够的时候自动收缩日志文件吗?


master.dbo.xp_fixeddrives 返回值不能直接去接
需要先定义一个表,然后去接

declare @table table(drive nvarchar(255),MB int)

insert into @table exec master.dbo.xp_fixeddrives

select * from @table