开发者社区> 问答> 正文

我需要知道表在SQL Server中使用了多少磁盘空间

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

展开
收起
心有灵_夕 2019-12-24 21:50:25 780 0
1 条回答
写回答
取消 提交回答
  • 创建表#tmpSizeChar(
         table_name sysname,
         row_count int,
         reserved_size varchar(50),
         data_size varchar(50),
         index_size varchar(50),
         未使用大小varchar(50))                              
    
    创建表#tmpSizeInt(
         table_name sysname,
         row_count int,
         reserved_size_KB int,
         data_size_KB int,
         index_size_KB int,
         未使用大小(KB int)   
    
    开启NOCOUNT
    插入#tmpSizeChar
    EXEC sp_msforeachtable'sp_spaceused''?'''     
    
    插入#tmpSizeInt(
            table_name,
            row_count,
            reserved_size_KB,
            data_size_KB,
            index_size_KB,
            未使用大小_KB
            )
    SELECT [table_name],
            row_count,
            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
    
    2019-12-24 21:50:47
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server在电子商务中的应用与实践 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载