您的位置:首页 > 数据库

SQL Server使用系统表统计用户表的记录数

2014-08-22 13:11 176 查看
今天领导安排一个任务就是统计数据库中各个表的记录数目,我在数据库中数了一下一共有70多张表,当时感觉工作量还是挺大的。但通过查询资料使用了SQL Server内部的系统表,就轻松完成了任务,现记录下来以备他用。 用到的系统表为【sysobjects】、【sysindexes】,通过两张表的内连接查询即可统计出各用户表的记录数目。SQL如下:

with TableRecord(TableName,RecordCount) as
(
select o.name, i.rows
from sysobjects o, sysindexes i
where o.id = i.id
and o.Xtype = 'U'
and i.indid < 2
)
select * from TableRecord order by tablename

其中,’U‘代表用户表。

1、关于系统表【sysobjects】字段相关说明

列名数据类型描述
namesysname对象名。
Idint对象标识号。
xtypechar(2)对象类型。可以是下列对象类型中的一种:
C = CHECK 约束

D = 默认值或 DEFAULT 约束

F = FOREIGN KEY 约束

L = 日志

FN = 标量函数

IF = 内嵌表函数

P = 存储过程

PK = PRIMARY KEY 约束(类型是 K)

RF = 复制筛选存储过程

S = 系统表

TF = 表函数

TR = 触发器

U = 用户表

UQ = UNIQUE 约束(类型是 K)

V = 视图

X = 扩展存储过程

uidsmallint所有者对象的用户 ID。
infosmallint保留。仅限内部使用。
statusint保留。仅限内部使用。
base_schema_

ver
int保留。仅限内部使用。
replinfoint保留。供复制使用。
parent_objint父对象的对象标识号(例如,对于触发器或约束,该标识号为表 ID)。
crdatedatetime对象的创建日期。
ftcatidsmallint为全文索引注册的所有用户表的全文目录标识符,对于没有注册的所有用户表则为 0。
schema_verint版本号,该版本号在每次表的架构更改时都增加。
stats_schema_

ver
int保留。仅限内部使用。
typechar(2)对象类型。可以是下列值之一:
C = CHECK 约束

D = 默认值或 DEFAULT 约束

F = FOREIGN KEY 约束

FN = 标量函数

IF = 内嵌表函数

K = PRIMARY KEY 或 UNIQUE 约束

L = 日志

P = 存储过程

R = 规则

RF = 复制筛选存储过程

S = 系统表

TF = 表函数

TR = 触发器

U = 用户表

V = 视图

X = 扩展存储过程

userstatsmallint保留。
sysstatsmallint内部状态信息。
indexdelsmallint保留。
refdatedatetime留作以后使用。
versionint留作以后使用。
deltrigint保留。
instrigint保留。
updtrigint保留。
seltrigint保留。
categoryint用于发布、约束和标识。
cachesmallint保留。
2、关于系统表【sysindexes】字段相关说明

列名数据类型描述
idint表 ID(如果 indid = 0 或 255)。否则为索引所属表的 ID。
statusint内部系统状态信息。
firstbinary(6)指向第一页或根页的指针。
indidsmallint索引 ID:
1 = 聚集索引

>1 = 非聚集

255 = 具有 textimage 数据的表条目

rootbinary(6)如果 indid >= 1 和 < 255,root 是指向根页的指针。如果indid = 0 或indid = 255,root 是指向最后一页的指针。
minlensmallint最小行大小。
keycntsmallint键的数目。
groupidsmallint在其上创建对象的文件组 ID。
dpagesint如果 indid = 0 或 indid = 1,dpages 是已用数据页的计数。如果indid= 255,其设置为 0。否则是已用索引页的计数。
reservedint如果 indid = 0 或 indid = 1,reserved 是分配给所有索引和表数据的页计数。如果indid= 255,reserved 是分配给
textimage数据的页计数。否则是分配给索引的页计数。
usedint如果 indid = 0 或 indid = 1,used 是用于所有索引和表数据的总页数。如果indid= 255,used 是用于
textimage 数据的页计数。否则是用于索引的页计数。
rowcntbigint基于 indid = 0 和 indid = 1 的数据级行计数。如果indid = 255,rowcnt 设置为 0。
rowmodctrint对自上次更新表的统计后插入、删除或更新行的总数进行计数。
xmaxlensmallint最大行大小。
maxirowsmallint最大非叶索引行大小。
OrigFillFactortinyint创建索引时使用的起始填充因子值。不保留该值;然而,如果需要重新创建索引但记不住当初使用的填充因子,则该值可能很有帮助。
reserved1tinyint保留。
reserved2int保留。
FirstIAMbinary(6)保留。
impidsmallint保留。索引实现标志。
lockflagssmallint用于约束经过考虑的索引锁粒度。例如,对于本质上是只读的查找表,可以将其设置为仅进行表级锁定以使锁定成本减到最小。
pgmodctrint保留。
keysvarbinary(816)组成索引键的列 ID 列表。
namesysname表名(如果 indid = 0 或 255)。否则为索引的名称。
statblobimage统计 BLOB。
maxlenint保留。
rowsint基于 indid = 0 和 indid = 1的数据级行数,该值对于indid>1 重复。如果
indid = 255,rows 设置为 0。提供该列是为了向后兼容。
希望对大家有所帮助。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐