zoukankan      html  css  js  c++  java
  • 在 sql server 中,查询 数据库及数据库中各表的大小

    查询数据库的大小:

    EXEC sp_spaceused

    为了保证查询结果的实时性,推荐使用 @updateusage 参数来确保统计数据是最新的:

    EXEC sp_spaceused @updateusage = N'TRUE';

    查询某个表的大小,加上表名即可:

    EXEC sp_spaceused 'spt_values'

    查询整个库的表:

    -- =============================================
    -- 描  述:更新查询数据库中各表的大小,结果存储到数据表中
    -- =============================================
    CREATE PROCEDURE [dbo].[sp_UpdateTableSpaceInfo]
    AS
    BEGIN
        --查询是否存在结果存储表
        IF NOT EXISTS (SELECT * FROM sysobjects where id = OBJECT_ID(N'temp_tableSpaceInfo') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
        BEGIN
            --不存在则创建
            CREATE TABLE temp_tableSpaceInfo
            (name NVARCHAR(128), 
            rows char(11), 
            reserved VARCHAR(18),
            data VARCHAR(18),
            index_size VARCHAR(18),
            unused VARCHAR(18))
        END
        --清空数据表
        DELETE FROM temp_tableSpaceInfo
    
        --定义临时变量在遍历时存储表名称
        DECLARE @tablename VARCHAR(255)
    
        --使用游标读取数据库内所有表表名
        DECLARE table_list_cursor CURSOR FOR 
        SELECT name FROM sysobjects 
        WHERE OBJECTPROPERTY(id, N'IsTable') = 1 AND name NOT LIKE N'#%%' ORDER BY name
    
        --打开游标
        OPEN table_list_cursor
        --读取第一条数据
        FETCH NEXT FROM table_list_cursor INTO @tablename 
    
        --遍历查询到的表名
        WHILE @@FETCH_STATUS = 0
        BEGIN
            --检查当前表是否为用户表
            IF EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID(@tablename) AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
            BEGIN
                --当前表则读取其信息插入到表格中
                EXECUTE sp_executesql N'INSERT INTO temp_tableSpaceInfo EXEC sp_spaceused @tbname', N'@tbname varchar(255)', @tbname = @tablename
            END
            --读取下一条数据
            FETCH NEXT FROM table_list_cursor INTO @tablename 
        END
    
        --释放游标
        CLOSE table_list_cursor
        DEALLOCATE table_list_cursor
    END
    
    GO

    找到的另一种方式:

    declare  @table_spaceused table
    (name   nvarchar(100)
    ,rows   int
    ,reserved   nvarchar(100)
    ,data   nvarchar(100)
    ,index_size nvarchar(100)
    ,unused nvarchar(100)
    )
     
    insert into @table_spaceused
    (name,rows,reserved,data,index_size,unused )
    exec sp_MSforeachtable
    @command1='exec sp_spaceused ''?'''
     
    select * from @table_spaceused
  • 相关阅读:
    墨西哥选美皇后涉毒被捕 丢失桂冠
    html中的超连接和鼠标事件
    用SSL安全协议实现WEB服务器的安全性
    PHP中的一些经验积累 一些小巧实用的函数
    博客特效之背景动画雨滴(转帖)
    smarty中section的使用
    程序员语录
    css常用属性
    10年软件开发教会我最重要的10件事[转]
    WP7中对ListBox的ItemTemplate中子元素的后台操作
  • 原文地址:https://www.cnblogs.com/challengesoflife/p/9540517.html
Copyright © 2011-2022 走看看