sp_spaceused [[ @objname = ] 'objname' ] [,[ @updateusage = ] 'updateusage' ]
[ @objname=] 'objname'
請求其空間使用信息的表、索引視圖或隊列的限定或非限定名稱。 僅當指定限定對象名稱時,才需要使用引號。 如果提供完全限定對象名稱(包括數據庫名稱),則數據庫名稱必須是當前數據庫的名稱。
如果未指定 objname,則返回整個數據庫的結果。
objname 的數據類型為 nvarchar(776),默認值為 NULL。
[ @updateusage=] 'updateusage'
指示應運行 DBCC UPDATEUSAGE 以更新空間使用信息。 當未指定 objname 時,將對整個數據庫運行該語句;否則,將對 objname 運行該語句。 值可以為 true 或false。 updateusage 的數據類型為 varchar(5),默認值為 false。
exec sp_spaceused
database_name:數據庫名稱
database_size:當前數據庫的大小 (MB)。 database_size 包括數據和日志文件
unallocated space:未保留供數據庫對象使用的數據庫空間。
reserved:由數據庫中對象分配的空間總量。
data:數據使用的空間總量。
index_size:索引使用的空間總量。
unused:為數據庫中的對象保留但尚未使用的空間總量。
EXEC sys.sp_spaceused N'userinfo' --查詢指定的表名的空間使用情況
database_size 將始終大於 reserved + unallocated_space 之和,因為該值包括日志文件的大小,而 reserved 和 unallocated_space 只考慮數據頁。
在這兩個結果集的 index_size 中,都包括了 XML 索引和全文索引使用的頁。 當指定 objname 時,對象的 XML 索引和全文索引所使用的頁將計算在 reserved 和index_size 結果中。
如果為具有空間索引的數據庫或對象計算空間使用情況,則空間大小列(例如,database_size、 reserved 和 index_size)將包含空間索引的大小。
指定 updateusage 時,SQL Server 數據庫引擎將掃描數據庫中的數據頁,並根據每個表所使用的存儲空間對 sys.allocation_units 和 sys.partitions 目錄視圖進行必要的更正。 在某些情況下(例如刪除索引后、表的空間信息不是當前信息時),需要執行該操作。 updateusage 在大型表或數據庫上運行會花費一些時間。 只有當懷疑所返回的值不正確,而且該進程對數據庫中的其他用戶或進程沒有負面影響時,才應使用 updateusage。 如果首選該進程,則可以單獨運行 DBCC UPDATEUSAGE。
簡單查詢表記錄數從大到小排序
select max(object_name(object_id)) as tablename, sum(row_count) rows from sys.dm_db_partition_stats
where index_id<2
group by object_id
order by sum(row_count) desc
簡單查詢表數據Size從大到小排序
select max(object_name(object_id)) as tablename, (sum(in_row_data_page_count + lob_used_page_count + row_overflow_used_page_count) *8) as size_kb from sys.dm_db_partition_stats
where index_id<2
group by object_id
order by sum(in_row_data_page_count + lob_used_page_count + row_overflow_used_page_count)desc