zoukankan      html  css  js  c++  java
  • 查询SQL数据库中表占用资源情况的语句

    网上看到的查询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(15NULL,
      data     DEC(15NULL,
      indexp   DEC(15NULL,
      unused   DEC(15NULL)

    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
  • 相关阅读:
    python 判断返回结果 in用法
    关于requests的session方法保持不了cookie的问题。(seesion的意思是保持一个会话,比如 登陆后继续操作(记录身份信息) 而requests是单次请求的请求,身份信息不会被记录)
    python-selenium并发执行测试用例(方法一 各模块每一条并发执行)
    python 正则表达提取方法 (提取不来的信息print不出来 加个输出type 再print信息即可)
    unittest框架 assertEqual 报错 让其出现中文的方法(这个问题出现时 我找了老半天) 还追加了 报错信息自定义的方法
    python 指定文件编码的方法
    解决python中路径中包含中文无法找到文件的问题
    python 字符转换记录
    python-selenium 并发执行用例的问题
    深度影响价值
  • 原文地址:https://www.cnblogs.com/tulips/p/2516594.html
Copyright © 2011-2022 走看看