刚刚在做一个小项目,数据库中一张表有20来个字段,用我以前做的一个.NET实体类生成器一个一个的输入还是闲麻烦,于是打算找个时间来重新的改造一个那个.NET实体类,能够通过选择的数据库及用户表自动生成实体类,而且该实体类还有注释,即字段的说明字段,然后再加一个功能,生成数据库文档,其实也就是把字段字,类型,字段说明输出一个漂亮的表格而已,只要能获取出来生成HTML表格就比较容易了,上网找了一下,得到如下有用的SQL语句:
--
查询非系统数据库
Select name FROM Master.. SysDatabases where dbid > 4
-- 选择water数据库下的所有表
use [ water ] SELECT name FROM sysobjects WHERE xtype = ' U ' Or xtype = ' S '
-- 选择water数据库下的所有用户表
use [ water ] SELECT name FROM sysobjects WHERE xtype = ' U ' AND OBJECTPROPERTY (id, ' IsMSShipped ' ) = 0
-- 查询water数据库下的admin表的字段名,长度,类型,字段说明
use [ water ] SELECT a. [ name ] as ' 字段名 ' ,a.length ' 长度 ' ,c. [ name ] ' 类型 ' ,e.value as ' 字段说明 ' FROM syscolumns a
left join systypes b on a.xusertype = b.xusertype
left join systypes c on a.xtype = c.xusertype
inner join sysobjects d on a.id = d.id and d.xtype = ' U '
left join sys.extended_properties e on a.id = e.major_id and a.colid = e.minor_id and e.name = ' MS_Description '
where d.name = ' admin '
Select name FROM Master.. SysDatabases where dbid > 4
-- 选择water数据库下的所有表
use [ water ] SELECT name FROM sysobjects WHERE xtype = ' U ' Or xtype = ' S '
-- 选择water数据库下的所有用户表
use [ water ] SELECT name FROM sysobjects WHERE xtype = ' U ' AND OBJECTPROPERTY (id, ' IsMSShipped ' ) = 0
-- 查询water数据库下的admin表的字段名,长度,类型,字段说明
use [ water ] SELECT a. [ name ] as ' 字段名 ' ,a.length ' 长度 ' ,c. [ name ] ' 类型 ' ,e.value as ' 字段说明 ' FROM syscolumns a
left join systypes b on a.xusertype = b.xusertype
left join systypes c on a.xtype = c.xusertype
inner join sysobjects d on a.id = d.id and d.xtype = ' U '
left join sys.extended_properties e on a.id = e.major_id and a.colid = e.minor_id and e.name = ' MS_Description '
where d.name = ' admin '
其中sys.extended_properties系统内置视图用于存储字段说明,且只有在MSSQL2005以上才有这张表的,且前面的sys.不能去掉,SQL2000的话字段说明是存在另一个张表里的,表名忘记了,反正我不需要也懒得去查了...
特此记录!!!