今天在开发时,遇到要统计SQL Server 2005中数据库表的个数的问题。于是自己写下SQL:select count(1) from sysobjects where XTYPE='u',一执行,发现查询的得到表的个数比实际的用户表的个数多了一个。仔细一看发现结果中多了条数据。

图示如下:

其中sysdiagrams并不是用户表,而是数据库的关系图。可是我也没有建数据库的关系图,原来自己在操作SSMS时不小心点击了当前数据库下

的数据库关系图,图示如下:

然后选择了是,结果就出现上面查询得出的结果。

就此问题的答案揭晓了。

于是我将SQL查询语句改了下,可以避免这种情况了。

只统计出用户表的个数:

select count(1) from sysobjects where XTYPE='u' and [name] not in ('sysdiagrams')