码迷,mamicode.com
首页 > 数据库 > 详细

统计数据库大小的方法

时间:2018-01-26 20:49:02      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:into   数据文件   系统数据   style   部分   而且   body   ref   一个   

原文:统计数据库大小的方法

    一台服务器上所有数据库(也可能是部分数据库)的大小是我们经常需要了解的,它不仅能让我们知道目前数据库使用磁盘的比例,

而且定期搜集这些信息,还能了解数据库一段时间的数据增量,更为常用的是在做数据迁移和升级时,方便规划新服务器磁盘容量。

 这里介绍三种统计数据库大小的方法:

 方法一:使用 sp_spaceused

declare @dbname varchar(100) 
declare db_cur cursor for
select name from sys.sysdatabases where dbid>4 and name<>distribution
open db_cur
fetch next from db_cur into @dbname
while @@FETCH_STATUS=0
begin
print(use +QUOTENAME(@dbname))
Print(go)
Print(sp_spaceused)
fetch next from db_cur into @dbname
end
close db_cur
deallocate db_cur

  说明:我们做了初步的数据筛选,去掉了系统数据库和分发数据库,此方法会生成以下脚本

use [ReportServer]
go
sp_spaceused
use [ReportServerTempDB]
go
sp_spaceused
use [DataCache]
go
sp_spaceused
use [MessageCenter]
go
sp_spaceused
use [ABS]
go
sp_spaceused
use [dbcenter]
go
sp_spaceused
use [MDW]
go
sp_spaceused

我们直接运行,会得到相关数据库大小的统计信息:

技术分享图片

我们需要的数据是打钩的信息(带database_name),将这些数据拷贝出来,放到Excel中就能很方便的做统计了

技术分享图片

从图中可以看到,数据库大小为:363MB;此方法比较麻烦,不过对2000和2000以下版本的数据库是比较好的方法(没有DMV);

方法二:sys.database_files 和sp_MSforeachdb相结合

--统计某个实例中部分数据库大小:
use master
go
create table dbsize (dbname varchar(100),size int)

--将数据库名和大小插入数据库表中
exec sp_MSforeachdb "insert into master.dbo.dbsize
select ? as dbname,sum(size) as size from ?.sys.database_files"

说明:我们利用sp_MSforeachdb循环数据库,再在每个数据库中查询sys.database_files 视图来统计数据文件的大小,得到的结果放入到一个表中,

然后再使用这个表来做统计;

select * from master.dbo.dbsize

--计算筛选数据库总大小
select SUM(size)*8/1024 as dbsize from dbsize where dbname not in
(master,tempdb,model,msdb,distribution)

技术分享图片

如上图所示,统计出来的数据库大小也是:363MB。

方法三:sys.sysaltfiles与sys.databases结合统计

--db file size
select db.name,sf.name,sf.filename,sf.size from sys.sysaltfiles sf inner join sys.databases db
on sf.dbid=db.database_id
where db.database_id>4 and db.name <>distribution

--dbsize
select SUM(size)*8/1024 from sys.sysaltfiles sf inner join sys.databases db
on sf.dbid=db.database_id
where db.database_id>4 and db.name <>distribution

技术分享图片

这种方法一次性搞定,统计出的数据库大小也是:363MB,比较方便。

 

    此文就介绍这三种方法,如果大家有更好的方法,欢迎讨论。



 

  

统计数据库大小的方法

标签:into   数据文件   系统数据   style   部分   而且   body   ref   一个   

原文地址:https://www.cnblogs.com/lonelyxmas/p/8360687.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!