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

分享一个查看数据库文件空间使用率的sql
这几天搞镜像数据库,结果主库的日志无限增大,数据文件才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视图

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