如何在一个查询中查看给定SQL Server上所有数据库的所有磁盘使用情况。我的服务器上有大约15个不同的数据库,我想知道哪个数据库正在使用最大磁盘空间。
我知道我可以在SSMS中看到每个数据库的磁盘使用情况报告或登录到服务器并查看MDF / LDF文件的大小,但这似乎是一个非常明显的功能,它应该与SSMS一起提供,我似乎无法找到它
答案 0 :(得分:9)
我不知道任何内置方式,但你可以使用(未记录的)sp_MSforeachdb
程序。
CREATE TABLE #files(
[dbname] [sysname] NOT NULL,
[name] [sysname] NOT NULL,
[physical_name] [nvarchar](260) NOT NULL,
[size] [int] NOT NULL,
[max_size] [int] NOT NULL,
[growth] [int] NOT NULL
)
EXEC sp_MSforeachdb '
insert into #files
select ''[?]'',name,physical_name,size,max_size,growth
from [?].sys.database_files'
SELECT [dbname]
,[name]
,[physical_name]
,[size]
,[max_size]
,[growth]
FROM #files
答案 1 :(得分:9)
此存储过程将有所帮助。
exec sp_helpdb;
你会得到这样的东西:
name db_size owner dbid created status compatibility_level
--------- ------------- ------------- ---- ----------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------
Database1 7262.81 MB DOMAIN\Admin 5 Aug 25 2010 Status=ONLINE, Updateability=READ_WRITE, UserAccess=MULTI_USER, Recovery=FULL, Version=661, Collation=SQL_Latin1_General_CP1_CI_AS, SQLSortOrder=52, IsAutoCreateStatistics, IsAutoUpdateStatistics 100
Project27 22781.81 MB DOMAIN\User42 13 Oct 13 2011 Status=ONLINE, Updateability=READ_WRITE, UserAccess=MULTI_USER, Recovery=FULL, Version=661, Collation=SQL_Latin1_General_CP1_CI_AS, SQLSortOrder=52, IsTornPageDetectionEnabled, IsAnsiNullsEnabled, IsAutoCreateStatistics, IsAutoUpdateStatistics, IsQuotedIdentifiersEnabled 100
MyDBName 84.69 MB DOMAIN\Me 14 Oct 14 2011 Status=ONLINE, Updateability=READ_WRITE, UserAccess=MULTI_USER, Recovery=FULL, Version=661, Collation=SQL_Latin1_General_CP1_CI_AS, SQLSortOrder=52, IsAutoCreateStatistics, IsAutoUpdateStatistics, IsFullTextEnabled 100
要了解有关特定数据库的更多信息,请执行以下操作:
exec sp_helpdb DatabaseName;