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. bzoj 5127 数据校验

    题目大意: 一个数列a 对于 a 的一个区间 [l, r],若对于该区间 [l, r] 内的任意一个非空连续子区间,该子区间内出现过的数值在整数上值域连续,则称 [l, r]为合法区间 m次询问  每 ...

  2. P3225 [HNOI2012]矿场搭建 tarjan割点

    这个题需要发现一点规律,就是先按割点求块,然后求每个联通块中有几个割点,假如没有割点,则需要建两个出口,如果一个割点,则需要建一个出口,2个以上不用建. 题干: 题目描述 煤矿工地可以看成是由隧道连接 ...

  3. PCB Genesis脚本 C#调用Python

    在PCB行业,Genesis的二次开发的编程脚本越来越丰富了啊,从一开始进入眼界的Genesis脚本语言是很少的,CSH,PERL, 再后来慢慢发展,VB,易语言,VB.NET,C#,Java,TCL ...

  4. nodejs在windows下的安装

    Windowv 上安装Node.js Windows 安装包(.msi) : 32 位安装包下载地址 : http://nodejs.org/dist/v0.10.26/node-v0.10.26-x ...

  5. P3128 [USACO15DEC]最大流Max Flow(LCA+树上差分)

    P3128 [USACO15DEC]最大流Max Flow 题目描述 Farmer John has installed a new system of  pipes to transport mil ...

  6. HDU 5306 吉司机线段树

    思路: 后面nlogn的部分是伪证... 大家可以构造数据证明是这是nlog^2n的啊~ 吉老司机翻车了 //By SiriusRen #include <cstdio> #include ...

  7. 【洛谷2904/BZOJ1617】[USACO08MAR]跨河River Crossing(动态规划)

    题目:洛谷2904 分析: 裸dp-- dp方程也不难想: \(dp[i]\)表示运\(i\)头牛需要的最短时间,\(sum[i]\)表示一次运\(i\)头牛(往返)所需的时间,则 \[dp[i]=m ...

  8. SCOI2014题解

    SCOI2014由极不靠谱的电子坑爹大学出题.电子坑爹大学打破了多年行规,暴力+NOIP500分居然不能进队.极其逗比的第一天暴力给10分!!还好有些题不是很难,省队爷分数大概在150以上(最高420 ...

  9. Log4J2的 PatternLayout

    Log4J2 PatternLayout 参考 日志样例 : 2018-10-21 07:30:05,184 INFO - DeviceChannelServiceImpl.java:434[defa ...

  10. mysql中的各种concat

    引用:http://www.cnblogs.com/appleat/archive/2012/09/03/2669033.html 一.CONCAT()函数CONCAT()函数用于将多个字符串连接成一 ...