今天在开发时,遇到要统计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')
SQL统计SQLServer2005中数据库表个数的优化方法
本文讨论了在SQLServer2005中统计数据库表数量时遇到的问题,通过分析发现由于误操作导致查询结果包含非用户表。文章详细解释了问题原因,并提供了避免此类情况的SQL查询语句修改建议。
816

被折叠的 条评论
为什么被折叠?



