• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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

    上一篇:附加到SQL2012的数据库就不能再附加到低于SQL2012的数据库版本的解决方法
    下一篇:bak文件怎么打开 2000w数据怎么打开?
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    sql查看所有表大小的方法 sql,查看,所有,表大,小的,