【发布时间】:2009-05-29 18:46:50
【问题描述】:
我想知道是否有一条 sql 语句来获取服务器上所有数据库的当前大小,而不是右键单击并转到每个数据库的属性。
【问题讨论】:
标签: sql-server database sql-server-2005 size
我想知道是否有一条 sql 语句来获取服务器上所有数据库的当前大小,而不是右键单击并转到每个数据库的属性。
【问题讨论】:
标签: sql-server database sql-server-2005 size
如果你可以使用存储过程,这应该可以工作:
exec sp_msforeachdb 'use ? exec sp_spaceused'
【讨论】:
查看sys.master_files 表。
此查询将为您提供实例中所有内容的总大小:
SELECT SUM(size*8192.0) AS totalsize
FROM sys.master_files;
【讨论】:
最简单的方法是使用:
exec [sys].[sp_databases]
go
这会产生类似的东西:
Name Size Remarks
mydatabase1 29888 NULL
mydatabase2 13760 NULL
mydatabase3 11776 NULL
master 5376 NULL
model 3008 NULL
msdb 7616 NULL
tempdb 2560 NULL
对于与数据库关联的事务日志的大小,请使用:
dbcc sqlperf(logspace)
go
这会产生类似的东西:
Name Log Size (MB) Log Space Used (%) Status
master 1.242188 50.9434 0
tempdb 0.7421875 61.25 0
model 0.7421875 38.94737 0
msdb 1.992188 35.88235 0
mydatabase1 5.554688 18.55661 0
mydatabase2 2.742188 32.9594 0
mydatabase3 8.992188 26.58015 0
【讨论】:
exec sp_helpdb
在一张漂亮的表中列出服务器上所有数据库的数据大小、所有者、创建日期等。
如果您想深入研究特定数据库以查看可以使用的各个表大小
use MyFunkyDb
go
EXECUTE sp_MSforeachtable 'EXECUTE sp_spaceused [?]'
【讨论】: