在SQL Server 2005中查找多个数据库的大小

时间:2009-05-29 18:46:51

标签: sql-server database sql-server-2005 size

我想知道是否有一个sql语句来获取服务器上所有数据库的当前大小,而不是右键单击并转到每个数据库的属性。

4 个答案:

答案 0 :(得分:6)

如果您可以使用存储过程,这应该有效:

exec sp_msforeachdb 'use ? exec sp_spaceused'

答案 1 :(得分:4)

查看sys.master_files表格。

此查询将为您提供实例中所有内容的总大小:

SELECT SUM(size*8192.0) AS totalsize
FROM sys.master_files;

答案 2 :(得分:2)

最简单的方法是使用:

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

答案 3 :(得分:2)

exec sp_helpdb

在一个漂亮的表中列出服务器上所有数据库的数据大小,所有者,创建日期等。

如果您想深入研究特定数据库以查看可以使用的各个表格大小

use MyFunkyDb
go
EXECUTE sp_MSforeachtable 'EXECUTE sp_spaceused [?]'