在SQL Server中,你可以使用以下幾種方法來查看表空間的大小:
EXEC sp_spaceused;
SELECT
OBJECT_NAME(object_id) AS [TableName],
SUM(used_page_count) * 8 AS [TableSizeKB]
FROM
sys.dm_db_partition_stats
WHERE
index_id IN (0, 1) -- 0 是堆表,1 是聚集索引
GROUP BY
object_id
ORDER BY
[TableSizeKB] DESC;
這個查詢會返回每個表的名稱和占用空間的大小,以KB為單位。
SELECT
OBJECT_NAME(object_id) AS [TableName],
SUM(total_pages) * 8 AS [TableSizeKB]
FROM
sys.allocation_units
WHERE
type IN (1, 3) -- 1 是 IN_ROW_DATA 用于表和索引,3 是 LOB_DATA 用于大型對象(例如:文本和圖像)
GROUP BY
object_id
ORDER BY
[TableSizeKB] DESC;
這個查詢會返回每個表的名稱和占用空間的大小,以KB為單位。
請注意,以上方法返回的空間大小是近似值,并且可能與在操作系統級別上報告的空間大小有所不同。這是因為SQL Server使用頁來管理數據,并且在頁面分配和釋放時會有一些額外的開銷。