zoukankan      html  css  js  c++  java
  • 如何获取SQL Server数据库里表的占用容量大小的存储过程

    其实只要使用系统内置的存储过程sp_spaceused就可以得到表的相关信息

    如:sp_spaceused 'tablename'


    以下是为了方便写的一个存储过程,目的是把当前的所有表的相关信息全部都保存在一个指定的表里面

    CREATE PROCEDURE get_tableinfo AS
     
    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
     
     

    执行存储过程
    exec get_tableinfo

    查询运行该存储过程后得到的结果
    select *
    from tablespaceinfo 
    order by cast(left(ltrim(rtrim(reserved)) , len(ltrim(rtrim(reserved)))-2) as int) desc

    申明

    非源创博文中的内容均收集自网上,若有侵权之处,请及时联络,我会在第一时间内删除.再次说声抱歉!!!

    博文欢迎转载,但请给出原文连接。

  • 相关阅读:
    P1271 【深基9.例1】选举学生会(基数排序)
    P7076 [CSP-S2020] 动物园
    #10127. 「一本通 4.3 练习 1」最大数
    P2671 [NOIP2015 普及组] 求和
    P3369 【模板】普通平衡树
    P2503 [HAOI2006]均分数据
    P2846 [USACO08NOV]Light Switching G(动态开点写法)
    P6278 [USACO20OPEN]Haircut G
    P2341 [USACO03FALL][HAOI2006]受欢迎的牛 G
    P1012 [NOIP1998 提高组] 拼数
  • 原文地址:https://www.cnblogs.com/Athrun/p/684892.html
Copyright © 2011-2022 走看看