zoukankan      html  css  js  c++  java
  • SQLServer查看各个表大小

    declare @id int  
    declare @type character(2)  
    declare @pages  
    int  
    declare @dbname sysname 
    declare @dbsize dec(15,0) 
    declare @bytesperpage dec(15,0) 
    declare @pagesperMB dec(15,0) 
     
    create table #spt_space 
    ( 
      objid int null, 
      rows int null, 
      reserved dec(15) null, 
      data dec(15) null, 
      indexp dec(15) null, 
      unused dec(15) null 
    ) 
     
    set nocount on 
     
    -- Create a cursor to loop through the user   tables 
    declare c_tables cursor for 
    select id 
    from sysobjects 
    where xtype = 'U' 
     
    open c_tables 
     
    fetch next from c_tables 
    into @id 
     
    while @@fetch_status = 0 
    begin 
     
      /* Code from sp_spaceused */ 
      insert into #spt_space (objid, reserved) 
      select objid = @id, sum(reserved) 
      from sysindexes 
      where indid in (0, 1, 255) 
      and id = @id 
     
      select @pages = sum(dpages) 
      from sysindexes 
      where indid < 2 
      and id = @id 
      select @pages = @pages + isnull(sum(used), 0) 
      from sysindexes 
      where indid = 255 
      and id = @id 
      update #spt_space 
      set data = @pages 
      where objid = @id 
     
     
      /* index: sum(used) where indid in (0, 1, 255) - data */ 
      update #spt_space 
      set indexp = (select sum(used) 
      from sysindexes 
      where indid in (0, 1, 255) 
      and id = @id) 
        - data 
      where objid = @id 
     
      /* unused: sum(reserved) - sum(used) where indid in (0, 1, 255) */ 
      update #spt_space 
      set unused = reserved 
      - (select sum(used) 
      from sysindexes 
      where indid in (0, 1, 255) 
      and id = @id) 
      where objid = @id 
     
      update #spt_space 
      set rows = i.rows 
      from sysindexes i 
      where i.indid < 2 
      and i.id = @id 
      and objid = @id 
     
      fetch next from c_tables 
      into @id 
    end 
     
    select TableName = (select left(name,60) from sysobjects where id = objid), 
      Rows = convert(char(11), rows), 
      ReservedKB = ltrim(str(reserved * d.low / 1024.,15,0) + ' ' + 'KB'), 
      DataKB = ltrim(str(data * d.low / 1024.,15,0) + ' ' + 'KB'), 
      IndexSizeKB = ltrim(str(indexp * d.low / 1024.,15,0) + ' ' + 'KB'), 
      UnusedKB = ltrim(str(unused * d.low / 1024.,15,0) + ' ' + 'KB') 
     
    from #spt_space, master.dbo.spt_values d 
    where d.number = 1 
    and d.type = 'E' 
    order by reserved desc  
    drop table #spt_space 
    
    close c_tables 
    deallocate c_tables

    运行效果

  • 相关阅读:
    jieba库分词统计
    第九次作业——测试报告和用户手册
    第八次作业——系统设计和任务分配
    第七次作业-团队选题报告和需求规格说明书
    第六次作业——结对项目之需求分析与原型设计
    小学四则运算的简单实现
    jieba库分词
    第九次团队作业——测试报告和用户手册
    第八次作业——系统设计与团队分配(个人)
    团队项目之选题报告和需求规格说明书
  • 原文地址:https://www.cnblogs.com/zhaogaojian/p/13201818.html
Copyright © 2011-2022 走看看