SQLServer2008/2005 /2000生成数据字典语句(转载)

SQLServer2008/2005 生成数据字典语句 

SQLServer2008/2005 /2000生成数据字典语句(转载)
SQLServer2008/2005 /2000生成数据字典语句(转载)SELECT     
SQLServer2008/2005 /2000生成数据字典语句(转载)  表名
=case   when   a.colorder=1   then   d.name   else   ''   end
,   
SQLServer2008/2005 /2000生成数据字典语句(转载)  表说明
=case   when   a.colorder=1   then   isnull(f.value,'')   else   ''   end
,   
SQLServer2008/2005 /2000生成数据字典语句(转载)  字段序号
=
a.colorder,   
SQLServer2008/2005 /2000生成数据字典语句(转载)  字段名
=
a.name,   
SQLServer2008/2005 /2000生成数据字典语句(转载)  标识
=case   when   COLUMNPROPERTY(   a.id,a.name,'IsIdentity')=1   then   ''else   ''   end
,   
SQLServer2008/2005 /2000生成数据字典语句(转载)  主键
=case   when   exists(SELECT   1   FROM   sysobjects   where   xtype='PK'   and   name   in
   (   
SQLServer2008/2005 /2000生成数据字典语句(转载)  
SELECT   name   FROM   sysindexes   WHERE   indid   in
(   
SQLServer2008/2005 /2000生成数据字典语句(转载)  
SELECT   indid   FROM   sysindexkeys   WHERE   id   =   a.id   AND   colid=
a.colid   
SQLServer2008/2005 /2000生成数据字典语句(转载)  )))   
then   ''   else   ''   end
,   
SQLServer2008/2005 /2000生成数据字典语句(转载)  类型
=
b.name,   
SQLServer2008/2005 /2000生成数据字典语句(转载)  占用字节数
=
a.length,   
SQLServer2008/2005 /2000生成数据字典语句(转载)  长度
=COLUMNPROPERTY(a.id,a.name,'PRECISION'
),   
SQLServer2008/2005 /2000生成数据字典语句(转载)  小数位数
=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0
),   
SQLServer2008/2005 /2000生成数据字典语句(转载)  允许空
=case   when   a.isnullable=1   then   ''else   ''   end
,   
SQLServer2008/2005 /2000生成数据字典语句(转载)  默认值
=isnull(e.text,''
),   
SQLServer2008/2005 /2000生成数据字典语句(转载)  字段说明
=isnull(g.[value],''
)   
SQLServer2008/2005 /2000生成数据字典语句(转载)  
FROM
   syscolumns   a   
SQLServer2008/2005 /2000生成数据字典语句(转载)  
left   join   systypes   b   on   a.xtype=
b.xusertype   
SQLServer2008/2005 /2000生成数据字典语句(转载)  
inner   join   sysobjects   d   on   a.id=d.id     and   d.xtype='U'   and     d.name<>'dtproperties'
   
SQLServer2008/2005 /2000生成数据字典语句(转载)  
left   join   syscomments   e   on   a.cdefault=
e.id   
SQLServer2008/2005 /2000生成数据字典语句(转载)  
left   join   sys.extended_properties g   on   a.id=g.major_id   and   a.colid=
g.minor_id          
SQLServer2008/2005 /2000生成数据字典语句(转载)  
left   join   sys.extended_properties f   on   d.id=f.major_id   and   f.minor_id   =0
   
SQLServer2008/2005 /2000生成数据字典语句(转载)  
--where   d.name='要查询的表'         --如果只查询指定表,加上此条件   

SQLServer2008/2005 /2000生成数据字典语句(转载)
  order   by   a.id,a.colorder   
SQLServer2008/2005 /2000生成数据字典语句(转载)
SQLServer2008/2005 /2000生成数据字典语句(转载)

第二种版本

 

SQLServer2008/2005 /2000生成数据字典语句(转载)SQLServer2008/2005 /2000生成数据字典语句(转载)Code
SQL2000生成数据字典语句

         SELECT (
case when a.colorder=1 then d.name else '' end)表名,a.colorder 序号,a.name 列名,(case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then ''else '' end) 标识,
        (
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 olid
                                  FROM yscolumns
                                  WHERE (id 
= a.id) AND (name = a.name))))))) AND
              (xtype 
= 'PK'))>0 then '' else '' end) 主键,
       b.name 类型,
       a.length 字节数,
       COLUMNPROPERTY(a.id,a.name,
'PRECISION'as 长度,
       isnull(COLUMNPROPERTY(a.id,a.name,
'Scale'),0as 小数位数,
       (
case when a.isnullable=1 then ''else '' end) 允许空,
       isnull(e.text,
'') 默认值,
       isnull(g.[value],
'') AS 描述

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  .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 a.id,a.colorder

 

 SQL2005生成数据字典语句

       SELECT  (
case when a.colorder=1 then d.name else '' end)表名,a.colorder 序号,a.name 列名,(case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then ''else '' end) 标识,
        (
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) 主键,
       b.name 类型,
      a.length 字节数,
       COLUMNPROPERTY(a.id,a.name,
'PRECISION'as 长度,
       isnull(COLUMNPROPERTY(a.id,a.name,
'Scale'),0as 小数位数,
       (
case when a.isnullable=1 then ''else '' end) 允许空,
       isnull(e.text,
'') 默认值,
       isnull(g.[value],
'') AS 描述

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 sys.extended_properties g
on a.id
=g.major_id AND a.colid = g.major_id
order by a.id,a.colorder

 

 

以前的SQL2000下的语句

就改动了个sysproperties

 

SQLServer2008/2005 /2000生成数据字典语句(转载)SQLServer2008/2005 /2000生成数据字典语句(转载)Code
SELECT     
  表名
=case   when   a.colorder=1   then   d.name   else   ''   end
,   
  表说明
=case   when   a.colorder=1   then   isnull(f.value,'')   else   ''   end
,   
  字段序号
=
a.colorder,   
  字段名
=
a.name,   
  标识
=case   when   COLUMNPROPERTY(   a.id,a.name,'IsIdentity')=1   then   ''else   ''   end
,   
  主键
=case   when   exists(SELECT   1   FROM   sysobjects   where   xtype='PK'   and   name   in
   (   
  
SELECT   name   FROM   sysindexes   WHERE   indid   in
(   
  
SELECT   indid   FROM   sysindexkeys   WHERE   id   =   a.id   AND   colid=
a.colid   
  )))   
then   ''   else   ''   end
,   
  类型
=
b.name,   
  占用字节数
=
a.length,   
  长度
=COLUMNPROPERTY(a.id,a.name,'PRECISION'
),   
  小数位数
=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0
),   
  允许空
=case   when   a.isnullable=1   then   ''else   ''   end
,   
  默认值
=isnull(e.text,''
),   
  字段说明
=isnull(g.[value],''
)   
  
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       
  
left   join   sysproperties   f   on   d.id=f.id   and   f.smallid=0
   
  
--where   d.name='要查询的表'         --如果只查询指定表,加上此条件   

  order   by   a.id,a.colorder   
  
原文地址:http://www.cnblogs.com/tulips/archive/2009/05/02/1447648.html
版权说明

  如果标题未标有<转载、转>等字则属于作者原创,欢迎转载,其版权归作者和博客园共有。
  作      者:温景良
  文章出处:http://wenjl520.cnblogs.com/  或  http://www.cnblogs.com/

posted @ 2009-05-02 01:29 温景良(Jason) Views(304) Comments(0) Edit 收藏
 

公告

本文转自我的程序人生博客园博客,原文链接:http://www.cnblogs.com/wenjl520/archive/2009/05/02/1447654.html,如需转载请自行联系原作者
 
 
 
上一篇:阿里云发布技术公益计划:为100家创业公司提供免费安全防护


下一篇:云服务器ECS安全组实践(二)