• 【转载】sp_spaceused2,看库里全部表占用的物理空间


    我常用sp_spaceused来查看表所占的空间大小,可是一次只能看一个对象的。
    今天有空写了个sp_spaceused2,可以同时看全部表的空间大小。
    use master
    go
    EXEC sp_addmessage @msgnum = 55000@severity = 16
       
    @msgtext = N'Objects of type %s do not have space allocated.'
       
    @lang = 'us_english',@replace = 'replace'

    EXEC sp_addmessage @msgnum = 55000@severity = 16
       
    @msgtext = N'没有为类型 %1! 的对象分配的空间。'
       
    @lang = '简体中文',@replace = 'replace'
    go
    if exists (select 1 from sysobjects where name = 'sp_spaceused2' and type = 'P')
     
    drop procedure sp_spaceused2
    go
    create procedure sp_spaceused2 (
     
    @type varchar(2= 'U'-- The objects type we want size on.
     @updateusage varchar(5= false -- Param. for specifying that
         -- usage info. should be updated.
    )
    as
    create table #spt_space
    (
     id  
    int not null primary key,
     name  sysname,
     rows  
    int null,
     reserved 
    dec(15null,
     data  
    dec(15null,
     indexp  
    dec(15null,
     unused  
    dec(15null
    )

    --  Check the object type.
    if @type not in ('U','S'-- no physical data storage.
      begin
       
    raiserror(55000,-1,-1,@type)
       
    return (1)
      
    end

    --  Check to see if user wants usages updated.

    if @updateusage is not null
     
    begin
      
    select @updateusage=lower(@updateusage)

      
    if @updateusage not in ('true','false')
       
    begin
        
    raiserror(15143,-1,-1,@updateusage)
        
    return(1)
       
    end
     
    end

    if @updateusage = 'true'
     
    begin
      
    dbcc updateusage(0with no_infomsgs
      
    print ' '
     
    end

    set nocount on
    --id, name, rows
    insert into #spt_space (id, name, rows, data)
    select i.id, o.name, i.rows, 0
    from sysindexes i inner join sysobjects o on i.id = o.id 
    where i.indid < 2 and o.type = @type

    --reserved
    update #spt_space
    set reserved = r.reserved
    from ( select o.id, sum(i.reserved) as reserved from sysindexes i inner join sysobjects o on i.id = o.id 
     
    where i.indid in (01255and o.type = @type group by o.id) r
    where #spt_space.id = r.id

    --data
    update #spt_space
    set data = data + r.pages
    from ( select o.id, isnull(sum(i.dpages),0as pages from sysindexes i inner join sysobjects o on i.id = o.id 
     
    where i.indid < 2 and o.type = @type group by o.id) r
    where #spt_space.id = r.id

    update #spt_space
    set data = data + r.used
    from ( select o.id, isnull(sum(used), 0as used from sysindexes i inner join sysobjects o on i.id = o.id 
     
    where i.indid = 255 and o.type = @type group by o.id) r
    where #spt_space.id = r.id


    --index page
    update #spt_space
    set indexp = r.used - data
    from ( select o.id, sum(convert(dec(15),used)) as used from sysindexes i inner join sysobjects o on i.id = o.id 
     
    where i.indid in (01255and o.type = @type group by o.id) r
    where #spt_space.id = r.id

    --unused page
    update #spt_space
    set unused = reserved - r.used
    from ( select o.id, sum(convert(dec(15),used)) as used from sysindexes i inner join sysobjects o on i.id = o.id 
     
    where i.indid in (01255and o.type = @type group by o.id) r
    where #spt_space.id = r.id

    --output
     select #spt_space.name,
      rows 
    = convert(char(11), rows),
      reserved 
    = ltrim(str(reserved * d.low / 1024.,15,0+
        
    ' ' + 'KB'),
      data 
    = ltrim(str(data * d.low / 1024.,15,0+
        
    ' ' + 'KB'),
      index_size 
    = ltrim(str(indexp * d.low / 1024.,15,0+
        
    ' ' + 'KB'),
      unused 
    = 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'

    return 0
    go


    sp_MS_marksystemobject 
    'sp_spaceused2'

    go
    use [dbname]
    exec sp_spaceused2
    出处:http://blog.myspace.cn/1300316663/archive/2007/05/23/249582259.aspx
  • 相关阅读:
    Python编写AWS Version 4 signing (AWS4-HMAC-SHA256) for execute-api
    四种方法解决scrollview嵌套listview,listview高度确定问题
    ActionBarActivity详解
    Deepin 15.3 下罗技蓝牙键盘连接
    Flink Program Guide (10) -- Savepoints (DataStream API编程指导 -- For Java)
    Flink Program Guide (9) -- StateBackend : Fault Tolerance(Basic API Concepts -- For Java)
    Flink Program Guide (8) -- Working with State :Fault Tolerance(DataStream API编程指导 -- For Java)
    Flink Program Guide (7) -- 容错 Fault Tolerance(DataStream API编程指导 -- For Java)
    Flink Program Guide (6) -- 窗口 (DataStream API编程指导 -- For Java)
    Flink Program Guide (5) -- 预定义的Timestamp Extractor / Watermark Emitter (DataStream API编程指导 -- For Java)
  • 原文地址:https://www.cnblogs.com/yukaizhao/p/sp_spaceused2.html
Copyright © 2020-2023  润新知