数据库的大小是我们经常需要了解的,提前知道目前数据库使用磁盘的比例,而且定期搜集这些信息,还能了解数据库一段时间的数据增量,更为常用的是在做数据迁移和升级时,方便规划新服务器磁盘容量。这里介绍几种统计数据库大小的方法:
1、查看数据库文件路径
select name,dbid,filename from master.dbo.sysdatabases order by filename;
2、查看数据库文件 ,日志文件路径大小等信息
select name,physical_name,type_desc,convert (float,size)* (8192.0/1024)/1024.0 AS sizeMB ,state_desc ,convert(float,max_size)* (8192.0/1024)/1024.0 AS max_sizeMB ,growth from sys.database_files
3、查看具体某个库的
use dbname;
select * from [sysfiles];
4、使用 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 [master]
go
sp_spaceused
5、系统库之外的其它库文件大小
SELECT
DB_NAME(F.database_id) AS [数据库],
F.physical_name AS [物理文件名],
'增长方式' = (case is_percent_growth & 1 when 1 then
convert(nvarchar(15), growth) + N'%'
else
convert(nvarchar(15), convert (bigint, growth) * 8/1024) + N' MB' end),
F.max_size AS [最大大小],
F.type_desc AS [文件类型],
F.name AS [逻辑名称],
F.size*8/1024 AS [文件大小(MB)]
FROM sys.master_files F
INNER JOIN sys.databases D
ON D.database_id=F.database_id
INNER JOIN sys.database_mirroring dm
ON D.database_id=dm.database_id
AND(dm.mirroring_guid IS NULL OR dm.mirroring_role=1)
WHERE F.database_id>4
ORDER BY [数据库]
1826

被折叠的 条评论
为什么被折叠?



