sql server的数据库个数、表个数及表的数据量统计

 
--由于今天要监控数据,急需统计实例中1有多少库2库里有多少表3每个表有多少数据
--将写好的代码贴出来,用到如下的:
--sysobjects:在数据库每个对象(约束、默认值、日志、规则、存储过程)占一行。 
--sysindexes:数据库中的每个索引和表在表中各占一行。 
--syscolumns:每个表和视图中的每列在表中占一行,存储过程中每个参数在表中占一行。 
select * from sysobjects 
select * from sysindexes 
select * from syscolumns 
--1-----------统计有多少数据库,查出库里面多少表---------------
declare @str varchar(8000)
set @str=''  www.2cto.com  
select @str=@str+
'union all select '+quotename(name,'''')+' ,COUNT(*)
from '+name+'.dbo.sysobjects where xtype=''U'''
from (select  name from master.dbo.sysdatabases) a
set @str =' select ''0数据库总数'' as 库名,(select  count(*) from master.dbo.sysdatabases)
 as 表的个数 '+ @str+' order by 库名 '
print @str
exec(@str)
---2----------统计当前数据库的表的个数和表的数据记录数---------- 
set nocount on --不记录放回多少行受影响,这样速度快很多,是一种优化
if object_id(N'tempdb.db.#temp') is not null 
  drop table #temp   www.2cto.com  
create table #temp (name sysname,count numeric(18))
insert into #temp 
select o.name,i.rows 
from sysobjects o,sysindexes i 
where o.id=i.id and o.Xtype='U' and i.indid<2
select count(count) 当前库总表数,sum(count) 总记录数 from #temp 
select * from #temp 
set nocount off --打开返回计数
----3--------------比较两个数据库的表个数和数据量,两个库的数据结构相同------- 
set nocount on 
if object_id(N'tempdb.db.#temp1') is not null 
  drop table #temp1 
create table #temp1 (name sysname,count numeric(18))
insert into #temp1 
select o.name,i.rows 
from Ljfcdata30.dbo.sysobjects o,Ljfcdata30.dbo.sysindexes i 
where o.id=i.id and o.Xtype='U' and i.indid<2
--查询2
if object_id(N'tempdb.db.#temp2') is not null 
drop table #temp2
create table #temp2 (name sysname,count numeric(18))
insert into #temp2 
select o.name,i.rows 
from Ljfcdata31.dbo.sysobjects o,Ljfcdata31.dbo.sysindexes i 
where o.id=i.id and o.Xtype='U' and i.indid<2
select '30号' as 日期 ,count(count) 总表数,sum(count) 总记录数 from #temp1 
union all select '31号' ,count(count) 总表数,sum(count) 总记录数 from #temp2 
select i.name as 表名, i.count as '30号',j.count as '31号'
from #temp1 i Left join #temp2 j on i.name = j.name
  order by i.name
set nocount off
go
---3 查询数据库的所有表的所有列------------------------------------------------------------------
---3 查询数据库的所有表的所有列------------------------------------------------------------------
declare @s varchar(8000)
set @s=''  www.2cto.com  
select @s=@s+
( select 'select '''+name+''' as dbname,
a.name collate Chinese_PRC_CI_AS as tablename,
b.name collate Chinese_PRC_CI_AS as colname,
c.name collate Chinese_PRC_CI_AS as coltype,
c.length as coltype from ['+
name+']..sysobjects a 
inner join ['+
name+']..syscolumns b on a.id=b.id 
inner join ['+
name+']..systypes c on c.xtype=b.xtype where a.type=''U'''
as sql from master..sysdatabases as s where s.name=d.name)+' union '
from master..sysdatabases as d 
set @s=left(@s,len(@s)-7) + ' order by dbname'
print @s
execute(@s)
--以上的脚本在sql2008R2中通过
 

sql server的数据库个数、表个数及表的数据量统计的更多相关文章

  1. 【转】sql server获取数据库名,表明,表结构

    1.查询数据库中的所有数据库名: SELECT Name FROM Master..SysDatabases ORDER BY Name 2.查询某个数据库中所有的表名: SELECT Name FR ...

  2. SQL Server 查询数据库中被锁定的表

    在一次测试过程中,发现有些表一直被锁定,从网上搜集了下资料,可以使用一下语句查看数据库中那些表正被锁定: select request_session_id spid,OBJECT_NAME(reso ...

  3. SQL Server 从数据库中查询去年的今天的数据的sql语句

    因为最近的项目的一个小功能需要实现当前数据和历史的今天做一个对比.在网上也查了很久,很多都是实现一个月内的,一年内的所有数据,昨晚突然就找到了下面的实现方法,在SQL Server2008中试了一下, ...

  4. 抱SQL SERVER大腿之我爱用视图(对大数据量的管理)

    我们拥有一个巨大的表,两千多万条记录.也许在行家眼里,两千多万条记录顶多算条毛,不过这条毛也忒粗壮了一点:我们的数据库占用的空间已经达到5G多了.不要以为是日志文件在搞鬼,日志文件可以自动收缩的,最多 ...

  5. SQL Server 2012 数据库各个版本功能对比

    作为这篇SQL SERVER 2008数据库各版本功能对比 的姊妹篇,就写点SQL Server 2012 各个版本的区别以及物理以及逻辑上的限制. 个部分来分http://technet.micro ...

  6. SQL Server 2008 阻止保存要求重新创建表的更改问题的设置方法

    不是很理解为什么在2008中会加入阻止保存要求重新创建表的更改这个选项.症状表现为修改表结构的时候会"阻止"你.而且我遇到的情况是居然有的时候阻止你,有的时候不阻止你,摸不到头脑. ...

  7. Linux下使用FreeTDS访问MS SQL Server 2005数据库(包含C测试源码)

    Linux下使用FreeTDS访问MS SQL Server 2005数据库(包含C测试源码) http://blog.csdn.net/helonsy/article/details/7207497 ...

  8. 如何转换SQL Server 2008数据库到SQL Server 2005

        背景介绍: 公司一套系统使用的是SQL SERVER 2008数据库,突然一天收到邮件,需要将这套系统部署到各个不同地方(海外)的工厂,需要在各个工厂部署该数据库,等我将准备工作做好,整理文档 ...

  9. SQL Server附加数据库出现错误5123的正确解决方法

    因为自己有一本基于SQL Server 2005的数据库教程,里边使用的示例数据库是AdventureWorks for SQL Server 2005,而我的机子上装的是SQL Server 200 ...

随机推荐

  1. CodeForces - 557D Vitaly and Cycle(二分图)

    Vitaly and Cycle time limit per test 1 second memory limit per test 256 megabytes input standard inp ...

  2. IDEA 中Spark SQL通过JDBC连接mysql数据库

    一.IDEA装驱动: 1.下载一个MySQL的JDBC驱动:mysql-connector-java-5.1.44.tar.gz2.在idea Open Moudle Settings 在 Moudl ...

  3. Word中公式和文字混排对齐的问题

    全选-字体-字符间距-位置-标准-确定 段落-中文版式-文本对齐方式-居中-确定

  4. Linux基本命令 文件管理 下部

    1.1 移动文件 将/data目录移动到/root下 涉及命令mv [root@oldboyedu-50 ~]# mv /data/ /root/ 移动 [root@oldboyedu-50 ~]# ...

  5. windows下 redis/tomcat 服务自启动

    //设置redis服务自启动 //根据个人配置执行语句.   redis-server --service-install redis.windows.conf --loglevel verbose ...

  6. HDU2564 词组缩写

    2019-06-03 15:00:38 感觉有有种被坑了的感觉,这道题不难,就是一再的W,

  7. 344 Reverse String 反转字符串

    请编写一个函数,其功能是将输入的字符串反转过来.示例:输入:s = "hello"返回:"olleh"详见:https://leetcode.com/probl ...

  8. [转]Window2008站点安全设置,IIS7/IIS7.5中目录执行权限的设置方法

    本文转自:http://blog.snsgou.com/post-510.html 最近帮一个朋友管理Window 2008服务器,发现有个站点是用asp写的,更可怕的是还有传说中的“上传漏洞”,在上 ...

  9. SublimeText学习(二)-基本操作

    1.查看已安装的插件 看到已经安装的插件,看到了在上一篇中安装的Emmet 2.设置主题与字体 方法一: 方法二: 工具栏中 [Preference-浏览程序包]找到[Default文件夹]-用Sub ...

  10. Android项目实战_手机安全卫士手机防盗界面

    #安全卫士手机防盗# ###1.Activity的任务栈 1.类似一个木桶,每层只能放一个木块,我们放入木块和取出木块的时候只能从最上面开始操作 ###2.Android中的坐标系![](http:/ ...