+ -
当前位置:首页 → 问答吧 → 分享一个查看数据库文件空间使用率的sql

分享一个查看数据库文件空间使用率的sql

时间:2011-11-23

来源:互联网

这几天搞镜像数据库,结果主库的日志无限增大,数据文件才11G,日志文件已经增长到300G了,而且无法收缩,必须断开镜像,而技术部那帮懒人又嫌断开镜像麻烦,不想搞,最后只好让他们搞个job,通过每天备份事务日志来截断日志:
BACKUP LOG 数据库名 TO DISK = 'h:\log20111122.bak'

不过这样备份完毕后,日志文件还是300G,不会减小,只是文件使用率从原来的99%下降到45%,再备份一次,下降到1%了,下面就是查看文件使用率的sql:
USE 数据库名
GO
SELECT name, data_space_id 文件组id, size/128 [文件大小(兆)], 
  FILEPROPERTY(name, 'SpaceUsed')/128 [已用空间(兆)],
  size/128 - FILEPROPERTY(name, 'SpaceUsed')/128 [未用空间(兆)],
  FILEPROPERTY(name, 'SpaceUsed')*100.0/size [使用率(%)],
  max_size/128 [最大值(兆)], growth 增长值, is_percent_growth 是否百分比增长, physical_name 物理路径
FROM sys.database_files a 

也可以用下面的sql查看日志文件使用率(注:要管理员才有权限)
DBCC SQLPERF(LOGSPACE)

另外:sys.database_files是Sql2005以上才支持的系统视图,如果是Sql2000,请改用Sysfiles视图

作者: youbl   发布时间: 2011-11-23

谢了,顺便接个分

作者: ssp2009   发布时间: 2011-11-23

还有一点,通过备份日志,使得日志文件不会增长,而是循环使用现在空间了,唯一的缺憾就是现在这300g的空间,就这么扔着了

作者: youbl   发布时间: 2011-11-23

帮顶,是不是备分后就可以切断日志了。这个空间更是大大的回来了吧。

作者: jinfengyiye   发布时间: 2011-11-23

不能,要切断日志,必须暂停镜像,不暂停,只是日志的头部前移了,使得日志文件里的一些空间变为可以重复使用

引用 3 楼 jinfengyiye 的回复:
帮顶,是不是备分后就可以切断日志了。这个空间更是大大的回来了吧。

作者: youbl   发布时间: 2011-11-23

谢谢分享。

作者: fredrickhu   发布时间: 2011-11-23