刚好需要这个过程, 在网上找了几个, 感觉都差一些, 其SQL都特别长. 而且我特别需要用到聚类索引, 自己写了个, 这是程序开发使用到的版本.

读取SQLServer 数据表结构select o.name tablename, c.name fieldname, t.name fieldtype, columnproperty(c.id,c.name,'PRECISION') fieldlen, c.Scale,c.length,
读取SQLServer 数据表结构  c.colid fieldorder, c.isnullable, 
读取SQLServer 数据表结构  
case when c.colid in(select ik.colid
读取SQLServer 数据表结构    
from sysindexes i, Sysindexkeys ik, sysobjects oo
读取SQLServer 数据表结构    
where i.id=ik.id and i.indid=ik.indid
读取SQLServer 数据表结构      
and i.name=oo.name and oo.xtype='PK' --主键
读取SQLServer 数据表结构
      and o.id=i.id 
读取SQLServer 数据表结构  ) 
then 1 else 0 end isPrimaryKey,
读取SQLServer 数据表结构  
case when c.colid in(select ik.colid
读取SQLServer 数据表结构    
from sysindexes i, Sysindexkeys ik
读取SQLServer 数据表结构    
where i.id=ik.id and i.indid=ik.indid
读取SQLServer 数据表结构      
and o.id=i.id and i.indid=1 --聚类索引
读取SQLServer 数据表结构
  ) then 1 else 0 end isClusterKey,
读取SQLServer 数据表结构  
columnproperty( c.id, c.name,'IsIdentity') IsIdentity,
读取SQLServer 数据表结构  
isnull(m.text,'') defaultvalue
读取SQLServer 数据表结构
from sysobjects o, syscolumns c, systypes t, syscomments m
读取SQLServer 数据表结构
where o.xtype='U'
读取SQLServer 数据表结构  
and o.id=c.id 
读取SQLServer 数据表结构  
and c.xtype=t.xtype
读取SQLServer 数据表结构  
and c.cdefault*=m.id
读取SQLServer 数据表结构
order by o.name, c.colid
读取SQLServer 数据表结构

程序使用到的版本是否用0/1表示, 如果用在文档整理, 难看得要命, 优化了个文档版本的,在查询分析器找出来还是蛮好看的.

读取SQLServer 数据表结构select case when c.colid=1 then o.name else '' end 表名, 
读取SQLServer 数据表结构  c.colid 顺序, 
读取SQLServer 数据表结构  c.name 字段名, 
读取SQLServer 数据表结构  t.name 字段类型, 
读取SQLServer 数据表结构  
columnproperty(c.id,c.name,'PRECISION') 字段长度, 
读取SQLServer 数据表结构  
isnull(c.Scale,'') 小数位,
读取SQLServer 数据表结构  c.length 占用字节,
读取SQLServer 数据表结构  
case when c.isnullable=1 then '' else '' end 可为空, 
读取SQLServer 数据表结构  
case when c.colid in(select ik.colid
读取SQLServer 数据表结构    
from sysindexes i, Sysindexkeys ik, sysobjects oo
读取SQLServer 数据表结构    
where i.id=ik.id and i.indid=ik.indid
读取SQLServer 数据表结构      
and i.name=oo.name and oo.xtype='PK' --主键
读取SQLServer 数据表结构
      and o.id=i.id 
读取SQLServer 数据表结构  ) 
then '' else '' end 主键,
读取SQLServer 数据表结构  
case when c.colid in(select ik.colid
读取SQLServer 数据表结构    
from sysindexes i, Sysindexkeys ik
读取SQLServer 数据表结构    
where i.id=ik.id and i.indid=ik.indid
读取SQLServer 数据表结构      
and o.id=i.id and i.indid=1 --聚类索引
读取SQLServer 数据表结构
  ) then '' else '' end 聚类索引,
读取SQLServer 数据表结构  
case when columnproperty( c.id, c.name,'IsIdentity')=1 then '' else '' end 自增长,
读取SQLServer 数据表结构  
isnull(m.text,'') 默认值
读取SQLServer 数据表结构
from sysobjects o, syscolumns c, systypes t, syscomments m
读取SQLServer 数据表结构
where o.xtype='U'
读取SQLServer 数据表结构  
and o.id=c.id 
读取SQLServer 数据表结构  
and c.xtype=t.xtype
读取SQLServer 数据表结构  
and c.cdefault*=m.id
读取SQLServer 数据表结构
order by o.name, c.colid
读取SQLServer 数据表结构

 

相关文章: