SQL SERVER 查询所有表大小

DECLARE @T TABLE
(
    [name]           VARCHAR(max),
    [rows]           INT,
    reserved         VARCHAR(max),
    data_size        VARCHAR(max),
    index_size       VARCHAR(max),
    unused           VARCHAR(max)
)
  
--将表占用情况存放到表变量
INSERT INTO @T
EXEC sp_MSforeachtable "exec sp_spaceused '?'"
  
SELECT TOP 20 [name],[rows],reserved,data_size,index_size,unused,
    CAST(REPLACE(reserved,'KB','') AS INT)/1024 as reserved_MB,
    CAST(REPLACE([data_size],'KB','') AS INT)/1024 as data_size_MB,
    CAST(REPLACE([index_size],'KB','') AS INT)/1024 as index_size_MB,
    CAST(REPLACE([unused],'KB','') AS INT)/1024 as unused_MB
FROM @T
order by CAST(REPLACE(reserved,'KB','') AS INT) desc
 
posted @ 2019-12-12 09:49  博客燕  阅读(1073)  评论(0编辑  收藏  举报