今天在开发时,遇到要统计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')