查看用户、表的大小(包括索引、LOB)
在SQL Server中,可以使用系统存储过程和动态SQL查询来查看用户表的大小,包括数据、索引和LOB数据(如text, ntext, image, varchar(max), nvarchar(max), varbinary(max)等)。以下是一个示例代码,用于查看特定用户表的大小:
DECLARE @TableName NVARCHAR(128)
DECLARE @SchemaName NVARCHAR(128)
SET @TableName = 'YourTableName' -- 替换为你的表名
SET @SchemaName = 'YourSchemaName' -- 替换为你的架构名,默认是dbo
DECLARE @SQL NVARCHAR(MAX)
SET @SQL =
'
SELECT
SUM(reserved_page_count) * 8 AS reserved_space_KB,
SUM(used_page_count) * 8 AS data_space_KB,
SUM(CASE WHEN index_id < 2 THEN used_page_count ELSE 0 END) * 8 AS index_space_KB,
SUM(CASE WHEN index_id < 2 THEN reserved_page_count ELSE 0 END) * 8 AS index_reserved_space_KB
FROM sys.dm_db_partition_stats
WHERE object_id = OBJECT_ID(''' + @SchemaName + '.' + @TableName + ''')
UNION ALL
SELECT
CAST(SUM(size) AS DECIMAL(18,2)) AS LOB_data_space_KB,
CAST(SUM(reserved_page_count) AS DECIMAL(18,2)) * 8 AS LOB_reserved_space_KB
FROM sys.dm_db_lob_space_usage
WHERE object_id = OBJECT_ID(''' + @SchemaName + '.' + @TableName + ''')
'
EXEC sp_executesql @SQL
请确保替换@TableName
和@SchemaName
为你要查询的表名和架构名。这段代码会返回表的保留空间、数据空间、索引空间和LOB数据的空间。
注意:这些查询利用了SQL Server的动态管理视图(DMVs)和函数,如sys.dm_db_partition_stats
和sys.dm_db_lob_space_usage
,这些功能提供了关于数据库中空间使用情况的详细信息。在使用这些查询时,请确保你有足够的权限来访问这些视图。
评论已关闭