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

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. 13.java.lang.NoSuchFiledException

    java.lang.NoSuchFiledException 方法不存在异常 当程序试图通过反射来创建对象,访问(修改或读取)某个filed,但是该filed不存在就会引发异常

  2. Get Intellisense for .axml files in Visual Studio

    原文Get Intellisense for .axml files in Visual Studio So in order to get some intellisense support for ...

  3. C语言入门(14)——结构体

    整数.字符.布尔值.浮点数这些数据类型都具有单一的值,这些可称为基本数据类型.但字符串是一个例外,它由很多字符组成,像这种由基本类型组成的数据类型称为复合数据类型,正如表达式和语句有组合规则一样,由基 ...

  4. POJ 2799 IP Networks

    network address是前(32-n)随意 后n位全零 network mask是前(32-n)全一 后n位全零 本题主要利用位移操作,1ULL表示无符号长整型的常数1,这样写可防止不必要的溢 ...

  5. python entry points 例子

    pbr的介绍不多,http://ju.outofmemory.cn/entry/156745 $ mkdir entry_test; cd entry_test; git init $ mkdir  ...

  6. Count the Colors(线段树,找颜色段条数)

    Count the Colors Time Limit: 2 Seconds      Memory Limit: 65536 KB Painting some colored segments on ...

  7. tigervnc*

    yum install -y tigervnc* tigervnc-server vncserver www.webmin.cn http://blog.sina.com.cn/s/blog_4ba5 ...

  8. ROS服务的理解

    服务是节点之间通信的另一种方式,服务允许节点发起一个请求和接收一个响应. 打开终端在里面输入: roscore 查看当前的运行节点: rosnode list 返回结果: /rosout 查看当前的运 ...

  9. mysql alter example

    alter table `user_movement_log` AFTER `Regionid` (在哪个字段后面添加) ) default null; //主键 ) unsigned not nul ...

  10. 为IE6-7间接支持:before和:after伪类

    :before和:after我们经常会用到,特别是在做移动端页面时,利用它制作文字前后的ICON.图片的垂直居中之类的非常方便且代码简洁(当然,功能远比这些要多的多...). 可是在PC端,由于现在还 ...