今天需要筛选出来库中行数不为零的表,于是动手写下了如下存储过程。

CREATE PROCEDURE TableCount AS
BEGIN
SET NOCOUNT ON
DECLARE @t1 AS TABLE(id INT IDENTITY,NAME NVARCHAR(50),RowsCount INT)
DECLARE @indexid AS INT
DECLARE @maxid AS INT
DECLARE @count AS INT
DECLARE @name AS VARCHAR(50)
DECLARE @sqlstr AS NVARCHAR(500)
INSERT INTO @t1 SELECT NAME,0 FROM dbo.sysobjects WHERE type='U'
SELECT @maxid=MAX(id),@indexid=1 FROM @t1
WHILE(@maxid>=@indexid)
BEGIN
SELECT @name = name FROM @t1 WHERE id=@indexid
SET @sqlstr = 'SELECT @Count1=COUNT(0) FROM '+@name
exec sp_executesql @sqlstr,N'@Count1 int output',@count output
UPDATE @t1 SET RowsCount=@count WHERE id=@indexid
SET @indexid=@indexid+1
END
SET NOCOUNT OFF
SELECT * FROM @t1 WHERE RowsCount>0
END
GO
EXEC TableCount
GO

这样大功告成!

事后上网查阅相关资料发现有更简便的方法,贴在这里供大家参考吧。

CREATE TABLE #temp (Name VARCHAR (255), RowsCount INT)
EXEC sp_MSforeachtable 'INSERT INTO #temp SELECT ''?'', COUNT(0) FROM ?'
SELECT Name, RowsCount FROM #temp WHERE RowsCount>0 ORDER BY Name
DROP TABLE #temp

注: 系统存储过程sp_MSforeachtable和sp_MSforeachdb,用于遍历每个表和遍历每个数据库。

总结,遇到问题还是先查一下有没有现成的方法能省不少的时间的,而且还可以学习到新的知识。

@空紫竹 提供的更快捷的方法: (2015-03-27编辑)

select rows,OBJECT_NAME(id) as TABLENAME
from sysindexes
where indid=0

MSSQL数据库统计所有表的记录数的更多相关文章

  1. Oracle查询数据库中所有表的记录数

    1.Oracle查询数据库中所有表的记录数,但是有可能不准建议用第二种方式进行查询 select t.table_name,t.num_rows from user_tables t 2.创建orac ...

  2. SQLSERVER中统计所有表的记录数

    SQLSERVER中统计所有表的记录数 利用系统索引表sysindexes中索引ID indid<1的行中的rows列存有该表的行数这一特点.    方法是利用隐藏未公开的系统存储过程sp_MS ...

  3. SQLSERVER 数据库查看各表的记录数

    select   a.name as 表名,max(b.rows) as 记录条数   from   sysobjects   a   ,sysindexes   b       where   a. ...

  4. mysql 查看数据库中所有表的记录数

    use information_schema; SELECT DISTINCT t.table_name, t.engine '表引擎', t.table_rowsFROM TABLES tWHERE ...

  5. 36. Oracle查询数据库中所有表的记录数

    select t.table_name,t.num_rows from user_tables t

  6. 4. mysql 查看数据库中所有表的记录数

    use information_schema; select table_name,table_rows from tables where TABLE_SCHEMA = 'testdb'  orde ...

  7. mysql统计指定数据库的各表的条数

    mysql统计指定数据库的各表的条数 SELECT table_schema,table_name,table_rows,CREATE_TIME FROM TABLES WHERE TABLE_SCH ...

  8. MySQL单表最大记录数不能超过多少?

    MySQL单表最大记录数不能超过多少? 很多人困惑这个问题.其实,MySQL本身并没有对单表最大记录数进行限制,这个数值取决于你的操作系统对单个文件的限制本身. 从性能角度来讲,MySQL单表数据不要 ...

  9. 统计MSSQL数据库中所有表记录的数量

    SELECT a.name as '表名', b.rows as '记录数' FROM sysobjects AS aINNER JOIN sysindexes AS b ON a.id = b.id ...

随机推荐

  1. Apriori算法

    APRIORI Apriori算法是一种挖掘关联规则的频繁项集算法,其核心思想是通过候选集生成和情节的向下封闭检测两个阶段来挖掘频繁项集.而且算法已经被广泛的应用到商业.网络安全等各个领域. Apri ...

  2. thunk的主要用法

    主要用法目前用的多的就三种; thunk.all 并发 thunk.sql 同步 thunk.race 最先返回的进入结果输出 前两个返回的结果都是数组,最后一个返回的是对象: thunk的链式调用没 ...

  3. 利用sass构建组件化的ui库

    创建公用的Sass项目模板 在做项目时,不管什么项目,他们之间总是有一些可以共用的部分.比如说重置样式.公用样式.模块组件.UI库等.那么在Sass项目中也是如此.为了避免在每个项目中做一些相同的事情 ...

  4. 算法导论——lec 10 图的基本算法及应用

    搜索一个图是有序地沿着图的边訪问全部定点, 图的搜索算法能够使我们发现非常多图的结构信息, 图的搜索技术是图算法邻域的核心. 一. 图的两种计算机表示 1. 邻接表: 这样的方法表示稀疏图比較简洁紧凑 ...

  5. 配置tomcat的https通信(单向认证)

    1.首先用jdk带的工具生成证书库 打开cmd命令行窗口,cd 到tomcat安装目录的bin下面执行 keytool -v -genkey -alias tomcat -keyalg RSA -ke ...

  6. Java通过JDBC链接数据库,数据库中wen

    连接数据库设置编码 jdbc:mysql://地址:3306/数据库名?characterEncoding=utf8

  7. <a>元素生成多个<a>的问题,元素标签结尾影响

    告诉我不是真的吧,<a/>和<a></a>真的有区别...

  8. Jquery 获取IP地址

    //获取ip和地址 $(function () { var url = 'http://chaxun.1616.net/s.php?type=ip&output=json&callba ...

  9. jQ的自定义插件

    此文运用的是优雅的Markdown而书 项目中写js时,有很多时候有需要重复利用的东西,我们可以给它们写成一个插件的形式,这样阅读性和适用性都会大大提高.最近抽个时间,好一番的研究了下 Jcrop 的 ...

  10. 一年开发ASP.NET MVC4项目经验总结

    一年开发ASP.NET MVC4项目所用所学技术经验总结 阅读目录 文章背景 前端所用技术摘要 后端所用技术摘要 1. 文章背景 本人2014年从Java转行到C#从事BS项目的开发,刚开始接触的是A ...