积极答复者
SQL Server2008 R2如何查询数据库所在硬盘分区大小?

问题
答案
-
exec master..xp_fixeddrives exec master..xp_availablemedia 2 exec xp_availablemedia 2 --得到SQL中的各种目录 declare @path varchar(8000) --得到当前数据库的数据文件路径 select @path=rtrim(reverse(filename)) from sysfiles select @path=reverse(substring(@path,charindex('\',@path),8000)) select 数据文件目录=@path --得到SQL安装时设置的数据文件路径 select @path=rtrim(reverse(filename)) from master..sysfiles where name='master' select @path=reverse(substring(@path,charindex('\',@path),8000)) select SQL数据文件目录=@path --根据安装路径得到默认的备份目录: select @path=rtrim(reverse(filename)) from master..sysfiles where name='master' select @path=substring(@path,charindex('\',@path)+1,8000), @path=reverse(substring(@path,charindex('\',@path),8000))+'BACKUP\' select SQL默认备份目录=@path
更多相关内容,参考:
http://topic.csdn.net/u/20080903/14/170e2386-793f-4be9-8214-e0d061e7c8da.html
- 已建议为答案 maco wangModerator 2012年7月10日 7:55
- 已标记为答案 Link_firer 2012年7月13日 0:54
全部回复
-
exec master..xp_fixeddrives exec master..xp_availablemedia 2 exec xp_availablemedia 2 --得到SQL中的各种目录 declare @path varchar(8000) --得到当前数据库的数据文件路径 select @path=rtrim(reverse(filename)) from sysfiles select @path=reverse(substring(@path,charindex('\',@path),8000)) select 数据文件目录=@path --得到SQL安装时设置的数据文件路径 select @path=rtrim(reverse(filename)) from master..sysfiles where name='master' select @path=reverse(substring(@path,charindex('\',@path),8000)) select SQL数据文件目录=@path --根据安装路径得到默认的备份目录: select @path=rtrim(reverse(filename)) from master..sysfiles where name='master' select @path=substring(@path,charindex('\',@path)+1,8000), @path=reverse(substring(@path,charindex('\',@path),8000))+'BACKUP\' select SQL默认备份目录=@path
更多相关内容,参考:
http://topic.csdn.net/u/20080903/14/170e2386-793f-4be9-8214-e0d061e7c8da.html
- 已建议为答案 maco wangModerator 2012年7月10日 7:55
- 已标记为答案 Link_firer 2012年7月13日 0:54
-
--指定数据库,直接select filename from <your_db_name>.dbo.sysfiles即可 GPOSDB是我机器的其中一个数据库在D盘 declare @drivename char(1) select @drivename=left(filename,1) from GPOSDB.dbo.sysfiles where fileid= 1 --赋值所以没有结果网格显示 SELECT 数据库所属驱动器=@drivename if not exists(select 1 from tempdb.dbo.sysobjects where name like '#FreeSpace%' and type='U') create table #FreeSpace( Drive char(1), MB_Free int ) else DROP table #FreeSpace insert into #FreeSpace exec xp_fixeddrives select MB_Free AS 数据库所属驱动器剩余空间 from #FreeSpace where Drive = @drivename
注意:某个数据库的数据文件可能跨越两个及以上不同的物理磁盘;所以@drivename变量有可能得到不唯一的值。可以考虑用游标来实现- 已建议为答案 maco wangModerator 2012年7月10日 7:55
-
如果是SQL Server 2008 R2 SP1或更高版本的话,建议使用
sys.dm_os_volume_stats (http://msdn.microsoft.com/zh-cn/library/hh223223(v=sql.105).aspx)
因为原来的xp函数无法处理mount point的信息。
想不想时已是想,不如不想都不想。