导出MSSQL数据库字典

SELECT 
 (
case when a.colorder=1 then d.name else '' end) N'表名',
 a.colorder N
'字段序号',
 a.name N
'字段名',
 (
case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then ''else '' end) N'标识',
 (
case when (SELECT count(*)
 
FROM sysobjects
 
WHERE (name in
           (
SELECT name
          
FROM sysindexes
          
WHERE (id = a.id) AND (indid in
                    (
SELECT indid
                   
FROM sysindexkeys
                   
WHERE (id = a.id) AND (colid in
                             (
SELECT colid
                            
FROM syscolumns
                            
WHERE (id = a.id) AND (name = a.name))))))) AND
        (xtype 
= 'PK'))>0 then '' else '' end) N'主键',
 b.name N
'类型',
 a.length N
'占用字节数',
 
COLUMNPROPERTY(a.id,a.name,'PRECISION'as N'长度',
 
isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0as N'小数位数',
 (
case when a.isnullable=1 then ''else '' end) N'允许空',
 
isnull(e.text,'') N'默认值',
 
isnull(g.[value],''AS N'字段说明'
--into ##tx

FROM  syscolumns  a left join systypes b 
on  a.xtype=b.xusertype
inner join sysobjects d 
on a.id=d.id  and  d.xtype='U' and  d.name<>'dtproperties'
left join syscomments e
on a.cdefault=e.id
left join sysproperties g
on a.id=g.id AND a.colid = g.smallid  
order by object_name(a.id),a.colorder

posted @ 2008-07-09 10:28  jinweida  阅读(285)  评论(0编辑  收藏  举报