参考sql2012存储过程写的统计所有用户表尺寸大小的示例

可以结合sp_MSforeachdb再遍历所有用户数据库查看所有表的尺寸大小,注意它的参数@sql不能超过nvarchar(2000),这里就不贴出代码了。
另外还可以定期运行并将结果保存下来,以便观察数据变化趋势。

查询单个数据库的所有用户表尺寸大小:

复制代码 代码如下:
Select @@servername as ServerName,db_name() as DBName ,object_id as ObjectID, schema_name(schema_id) as SchName, name as TableName
    ,Rowcnt as Rows,Columns,Indexes,RowLength
    ,ReservedKb, TableUsedKb
    ,UsedKb-TableUsedKb as IndexUsedKb,ReservedKb-UsedKb as UnusedKb
    ,create_date as CreateDate,modify_date as LastModifiedDate, getutcdate() as TrackingUTCTime
From
(select
    object_id
    ,schema_id
    ,name
    ,(Select max(row_count) from sys.dm_db_partition_stats p with(nolock) where p.object_id=t.object_id and p.index_id < 2)  as Rowcnt
    ,(Select Count(1) from dbo.syscolumns with(nolock) where id = t.object_id) as Columns
    ,(Select Count(distinct index_id) from sys.dm_db_partition_stats p with(nolock) where p.object_id=t.object_id) as Indexes
    ,(SELECT SUM(length) FROM dbo.syscolumns with(nolock) WHERE id = t.object_id) as RowLength
    ,IsNull((Select SUM(reserved_page_count) from sys.dm_db_partition_stats p with(nolock) where p.object_id=t.object_id),0)*8
        + IsNull((Select sum(reserved_page_count)
                FROM sys.dm_db_partition_stats p2 with(nolock)
                inner join sys.internal_tables it with(nolock) on p2.object_id = it.object_id
                WHERE it.parent_id = t.object_id
                        AND it.internal_type IN (202,204,207,211,212,213,214,215,216,221,222,236)),0)* 8 as ReservedKb
    ,IsNull((Select SUM(in_row_data_page_count + lob_used_page_count + row_overflow_used_page_count)
                 from sys.dm_db_partition_stats p with(nolock) where p.object_id=t.object_id and p.index_id < 2),0)* 8 as TableUsedKb
    ,IsNull((Select SUM(used_page_count) from sys.dm_db_partition_stats p with(nolock) where p.object_id=t.object_id),0)*8
        + IsNull((Select sum(used_page_count)
                FROM sys.dm_db_partition_stats p2 with(nolock)
                inner join sys.internal_tables it with(nolock) on p2.object_id = it.object_id
                WHERE it.parent_id = t.object_id
                        AND it.internal_type IN (202,204,207,211,212,213,214,215,216,221,222,236)),0)* 8 as UsedKb
    ,create_date
    ,modify_date
from sys.tables t with(nolock)
where Type='U'
) A
order by ReservedKb desc

时间: 2024-09-19 10:12:51

参考sql2012存储过程写的统计所有用户表尺寸大小的示例的相关文章

数据-请大神用oracle中存储过程的自动统计+JOB为我解答问题

问题描述 请大神用oracle中存储过程的自动统计+JOB为我解答问题 比如我有两张表A和B,我想每隔一个小时统计一下"FLOW"这个字段的所有数据的总和,然后将结果保存到B表中的"FLOW_SUM"字段中?我想用存储过程中的自动统计+JOB写,各位大神,求解答,最好写出sql语句来 解决方案 我已经解决了!!!!!!!!!!!!!!!!!!! 解决方案二: 给你个提示想一想 触发器

MySQL 4.1.0 中文参考手册 --- 6.6 基本的 MySQL 用户实用命令

mysql|参考|参考手册|中文 MySQL 4.1.0 中文参考手册 --- 犬犬(心帆)翻译 MySQL Reference Manual for version 4.1.0-alpha. 6.6 基本的 MySQL 用户实用命令6.6.1 USE 句法 USE db_name USE db_name 语句告诉 MySQL 使用 db_name 数据库作为以后查询的缺省数据库.数据库保持为当前数据库,只到该会话结束或另一个 USE 语句发出: mysql> USE db1;mysql> S

使用 Redis 统计在线用户人数的例子

在构建应用的时候, 我们经常需要对用户的一举一动进行记录, 而其中一个比较重要的操作, 就是对在线的用户进行记录. 本文将介绍四种使用 Redis 对在线用户进行记录的方案, 这些方案虽然都可以对在线用户的数量进行统计, 但每个方案都有一些自己特有的操作, 并且各个方案的性能特征以及资源消耗也各有不同. ../../_images/online_users.png 方案 1 :使用有序集合 每当一个用户上线时, 我们就执行 ZADD 命令, 将这个用户以及它的在线时间添加到指定的有序集合中: Z

百度统计VIP用户尊贵专享【百度站长平台】内测绿色通道

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;     感谢广大站长朋友的支持,百度统计已经走过了两年的风雨历程.为回馈大家一直以来给予我们的支持,特地举行两周年庆一系列答谢活动,进一步帮助大家提升流量. 此次活动为大家准备的首份超级大礼是:百度站长平台邀请码(sitemap.baidu.com).百度站长平台会让百度更加了解您的网站,并让您可以直接获取网站抓取.网站问题等信息.之前一直极少量地邀请用户使用并严格

【Filter 不登陆无法访问】web项目中写一个过滤器实现用户不登陆,直接给链接,无法进入页面的功能

在web项目中写一个过滤器实现用户不登陆,直接给链接,无法进入页面,而重定向到登陆界面的功能. 项目是用springMVC+spring+hibernate实现 (和这个没有多大关系) 第一步: 首先写一个登录权限过滤类--LoginFilter类实现Filter接口 1 package com.agen.util; 2 3 import java.io.IOException; 4 5 import javax.servlet.Filter; 6 import javax.servlet.Fi

求一个MSQL查询:根据用户表,查询并统计用户点击数。

问题描述 表的结构是:用户表:user---------------------------------uid username truename1 aaaa 张三2 bbbb 李四3 cccc 王二---------------------------------点击数据表:counts---------------------------------uid counr IP1 1 123.123.123.1231 1 221.112.31.21 1 121.112.31.22 1 12.23

在sqlserver数据库里怎么创建不同用户表登录权限的表

问题描述 在sqlserver数据库库创建好权限表,在Vs2010里的登陆页面怎么实现不同用户登录后进入不同的页面,我已在数据库里建了员工表.管理员表.部门表.角色表,并且把角色表的id分别作为以上三个表的外键,求源码. 解决方案 解决方案二:通过用户帐号,找到他的角色,通过角色去检索相应的权限(即菜单),主页面加载响应的菜单.解决方案三:回复1楼,用radiobuttonlist控件存放角色表的id,在C#里怎么用switch循环语句来实现检索角色表的id呢,求源码.解决方案四:写个判断,if

oracle获取当前用户表、字段等详细信息SQL_oracle

做个笔记,仅供参考 SELECT d.TABLE_NAME tbName,//表名 COALESCE(t.COMMENTS, ' ') tbDesc, //表注释 a.COLUMN_NAME columnName, //字段名 a.DATA_TYPE columnType, //字段类型 a.DATA_LENGTH width, //字段长度 a.DATA_SCALE precision,//字段小数位 decode(a.NULLABLE,'Y','0','1') notNull,//是否允许空

关系型数据库设计-用户表和订单表 怎么设计

问题描述 关系型数据库设计-用户表和订单表 怎么设计 如果一个电商用关系型数据库, 假设有一个用户表,有一个订单表,订单表中有一个用户ID 的字段, 那查询某个用户的所有订单时岂不是要遍历整个订单表?没有在互联网公司工作过,不知道是怎么设计的,求解答. 解决方案 数据库可以使用索引,对userid列做了索引,再查询的时候就不需要全表遍历.这和互联网公司没有关系,基本的数据库常识你都没学会.