在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使用页来管理数据,并且在页面分配和释放时会有一些额外的开销。