zoukankan      html  css  js  c++  java
  • SQL查看所有表的大小

    --查看所有表的大小
    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
  • 相关阅读:
    System.Data.RealonlyException:列Column1被设置为realonly
    学习java过程中
    在windows server 2008下安装vs2005.打开vs2005的时候老提示要“运行vs2005sp1 建议使用管理员权限”
    windows Server 2008下面运行vs2005的问题
    大飞机MIS系统360把我的Transformer.Service服务杀掉了
    开通博客
    C#中怎样让控件显示在其他控件的上面
    vs2010发布问题
    vs在IE8无法调试的解决方法
    将身份证号粘贴到WPS表格后变成了“科学计数法”的解决方案
  • 原文地址:https://www.cnblogs.com/binghou/p/9097423.html
Copyright © 2011-2022 走看看