zoukankan      html  css  js  c++  java
  • 查看SQL Server数据库表、索引视图等占用的空间大小

    第一种方法(较简单,看的比较吃力):

    EXEC Sp_msforeachtable "EXEC Sp_spaceused '?'"
    


    第二种方法(较复杂,但看的比较清楚,原作者不详):

    IF NOT EXISTS (SELECT *
                   FROM   dbo.sysobjects
                   WHERE  id = Object_id(N'[dbo].[tablespaceinfo]')
                          AND Objectproperty(id, N'IsUserTable') = 1)
      CREATE TABLE tablespaceinfo --创建结果存储表
        (
           nameinfo   VARCHAR(50),
           rowsinfo   INT,
           reserved   VARCHAR(20),
           datainfo   VARCHAR(20),
           index_size VARCHAR(20),
           unused     VARCHAR(20)
        )
    
    DELETE FROM tablespaceinfo --清空数据表
    DECLARE @tablename VARCHAR(255) --表名称
    DECLARE @cmdsql VARCHAR(500)
    DECLARE Info_cursor CURSOR FOR
      SELECT o.name
      FROM   dbo.sysobjects o
      WHERE  Objectproperty(o.id, N'IsTable') = 1
             AND o.name NOT LIKE N'#%%'
      ORDER  BY o.name
    
    OPEN Info_cursor
    
    FETCH NEXT FROM Info_cursor INTO @tablename
    
    WHILE @@FETCH_STATUS = 0
      BEGIN
          IF EXISTS (SELECT *
                     FROM   dbo.sysobjects
                     WHERE  id = Object_id(@tablename)
                            AND Objectproperty(id, N'IsUserTable') = 1)
            EXECUTE Sp_executesql
              N'insert into tablespaceinfo exec sp_spaceused @tbname',
              N'@tbname varchar(255)',
              @tbname = @tablename
    
          FETCH NEXT FROM Info_cursor INTO @tablename
      END
    
    CLOSE Info_cursor
    
    DEALLOCATE Info_cursor
    
    GO
    
    --itlearner注:显示数据库信息
    Sp_spaceused @updateusage = 'TRUE'
    
    --itlearner注:显示表信息
    SELECT *
    FROM   tablespaceinfo
    ORDER  BY Cast(LEFT(Ltrim(Rtrim(reserved)), Len(Ltrim(Rtrim(reserved))) - 2) AS INT) DESC 
    


    第三种方法:

    SELECT Object_name(id)                                 tablename,
           8 * reserved / 1024                             reserved_,
           Rtrim(8 * dpages / 1024) + 'Mb'                 used,
           8 * ( reserved - dpages ) / 1024                unused,
           8 * dpages / 1024 - rows / 1024 * minlen / 1024 free,
           rows,
           *
    FROM   sysindexes
    WHERE  indid = 1
    ORDER  BY reserved_ DESC
    

    参考:http://msdn.microsoft.com/zh-cn/library/ms188776.aspx

  • 相关阅读:
    总结下目前维护团队中用到的一些技术和工具
    一次修改时间导致的ORACLE 实例崩溃
    ruby 用watir 登录 CU的代码
    最近好烦.真的好烦
    Lucene.Net学习
    项目上线了,心情好爽
    轻松掌握XMLHttpRequest对象[转]
    微软发布3款SQL Injection攻击检测工具
    Domino开发
    用在JavaScript的RequestHelper [转]
  • 原文地址:https://www.cnblogs.com/chinalantian/p/2144872.html
Copyright © 2011-2022 走看看