15

我认为大多数人都知道如何通过 GUI(右键单击表、属性)来执行此操作,但在 T-SQL 中执行此操作完全很困难。

4

3 回答 3

13
创建表#tmpSizeChar (
     表名系统名,
     row_count 整数,
     reserved_size varchar(50),
     数据大小 varchar(50),
     index_size varchar(50),
     未使用大小 varchar(50))                              

创建表#tmpSizeInt (
     表名系统名,
     row_count 整数,
     reserved_size_KB int,
     data_size_KB 整数,
     index_size_KB 整数,
     未使用的大小 KB 整数)   

设置无计数
插入 #tmpSizeChar
EXEC sp_msforeachtable 'sp_spaceused ''?'''     

插入 #tmpSizeInt (
        表名,
        行数,
        reserved_size_KB,
        data_size_KB,
        index_size_KB,
        未使用大小 KB
        )
选择 [table_name],
        行数,
        CAST(SUBSTRING(reserved_size, 0, PATINDEX('% %', reserved_size)) AS int)reserved_size,
        CAST(SUBSTRING(data_size, 0, PATINDEX('% %', data_size)) AS int)data_size,
        CAST(SUBSTRING(index_size, 0, PATINDEX('% %', index_size)) AS int)index_size,
        CAST(SUBSTRING(unused_size, 0, PATINDEX('% %', used_size)) AS int)unused_size
来自#tmpSizeChar   

/*
删除表#tmpSizeChar
删除表#tmpSizeInt
*/

选择 * 从 #tmpSizeInt
ORDER BY reserved_size_KB DESC
于 2008-08-05T19:11:11.453 回答
0

看看这个,我知道它在 2005 年有效(微软文档):

这是 pubs DB


select *
from pubs.sys.database_files

返回大小和 max_size。

于 2008-08-05T19:16:19.133 回答
0

sp_spaceused 表名

其中 tableName 是您想知道的表的名称。

于 2016-01-14T16:40:56.830 回答