微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sqlserver 的数据字典

sqlserver2005经过测试:

 

 

SELECT TOP 100 PERCENT --a.id,
CASE WHEN a.colorder = 1 THEN d.name ELSE '' END AS 表名,
CASE WHEN a.colorder = 1 THEN isnull(f.value,'') ELSE '' END AS 表说明,
a.colorder AS 字段序号,a.name AS 字段名,CASE WHEN COLUMNPROPERTY(a.id,
a.name,'IsIdentity') = 1 THEN '√' ELSE '' END AS 标识,
CASE WHEN EXISTS
(SELECT 1
FROM dbo.sysindexes si INNER JOIN
dbo.sysindexkeys sik ON si.id = sik.id AND si.indid = sik.indid INNER JOIN
dbo.syscolumns sc ON sc.id = sik.id AND sc.colid = sik.colid INNER JOIN
dbo.sysobjects so ON so.name = so.name AND so.xtype = 'PK'
WHERE sc.id = a.id AND sc.colid = a.colid) THEN '√' ELSE '' END AS 主键,
b.name AS 类型,a.length AS 长度,COLUMNPROPERTY(a.id,a.name,'PRECISION')
AS 精度,ISNULL(COLUMNPROPERTY(a.id,'Scale'),0) AS 小数位数,
CASE WHEN a.isnullable = 1 THEN '√' ELSE '' END AS 允许空,ISNULL(e.text,'')
AS 认值,ISNULL(g.[value],'') AS 字段说明,d.crdate AS 创建时间,
CASE WHEN a.colorder = 1 THEN d.refdate ELSE NULL END AS 更改时间
FROM dbo.syscolumns a LEFT OUTER JOIN
dbo.systypes b ON a.xtype = b.xusertype INNER JOIN
dbo.sysobjects d ON a.id = d.id AND d.xtype = 'U' AND
d.status >= 0 LEFT OUTER JOIN
dbo.syscomments e ON a.cdefault = e.id LEFT OUTER JOIN
sys.extended_properties g ON a.id = g.major_id AND a.colid = g.minor_id LEFT OUTER JOIN
sys.extended_properties f ON d.id = f.major_id AND f.minor_id = 0
ORDER BY d.name,a.colorder

 

 

 

 

 

 

1. sqlServer2000数据库字典--表结构.sql

SELECT   TOP   100   PERCENT   -- a.id, 

       CASE   WHEN  a.colorder  =   1   THEN  d.name  ELSE   ''   END   AS  表名, 

      
CASE   WHEN  a.colorder  =   1   THEN   isnull (f.value,  '' ELSE   ''   END   AS  表说明, 

      a.colorder 
AS  字段序号, a.name  AS  字段名,  CASE   WHEN   COLUMNPROPERTY (a.id, 

      a.name, 
' IsIdentity ' =   1   THEN   ' '   ELSE   ''   END   AS  标识, 

      
CASE   WHEN   EXISTS

          (
SELECT   1

         
FROM  dbo.sysindexes si  INNER   JOIN

               dbo.sysindexkeys sik 
ON  si.id  =  sik.id  AND  si.indid  =  sik.indid  INNER   JOIN

               dbo.syscolumns sc 
ON  sc.id  =  sik.id  AND  sc.colid  =  sik.colid  INNER   JOIN

               dbo.sysobjects so 
ON  so.name  =  si.name  AND  so.xtype  =   ' PK '

         
WHERE  sc.id  =  a.id  AND  sc.colid  =  a.colid)  THEN   ' '   ELSE   ''   END   AS  主键, 

      b.name 
AS  类型, a.length  AS  长度,  COLUMNPROPERTY (a.id, a.name,  ' PRECISION '

      
AS  精度,  ISNULL ( COLUMNPROPERTY (a.id,  ' Scale ' ),  0 AS  小数位数, 

      
CASE   WHEN  a.isnullable  =   1   THEN   ' '   ELSE   ''   END   AS  允许空,  ISNULL (e. text ''

      
AS  认值,  ISNULL (g. [ value ] '' AS  字段说明, d.crdate  AS  创建时间, 

      
CASE   WHEN  a.colorder  =   1   THEN  d.refdate  ELSE   NULL   END   AS  更改时间

FROM  dbo.syscolumns a  LEFT   OUTER   JOIN

      dbo.systypes b 
ON  a.xtype  =  b.xusertype  INNER   JOIN

      dbo.sysobjects d 
ON  a.id  =  d.id  AND  d.xtype  =   ' U '   AND  

      d.status 
>=   0   LEFT   OUTER   JOIN

      dbo.syscomments e 
ON  a.cdefault  =  e.id  LEFT   OUTER   JOIN

      dbo.sysproperties g 
ON  a.id  =  g.id  AND  a.colid  =  g.smallid  AND  

      g.name 
=   ' MS_Description '   LEFT   OUTER   JOIN

      dbo.sysproperties f 
ON  d.id  =  f.id  AND  f.smallid  =   0   AND  

      f.name 
=   ' MS_Description '

ORDER   BY  d.name, a.colorder


    sqlServer2005数据库字典--表结构.sql

SELECT   TOP   100   PERCENT   -- a.id, 

      
CASE   WHEN  a.colorder  =   1   THEN  d.refdate  ELSE   NULL   END   AS  更改时间

FROM  dbo.syscolumns a  LEFT   OUTER   JOIN

      dbo.systypes b 
ON  a.xtype  =  b.xusertype  INNER   JOIN

      dbo.sysobjects d 
ON  a.id  =  d.id  AND  d.xtype  =   ' U '   AND  

      d.status 
>=   0   LEFT   OUTER   JOIN

      dbo.syscomments e 
ON  a.cdefault  =  e.id  LEFT   OUTER   JOIN

      sys.extended_properties g 
ON  a.id  =  g.major_id  AND  a.colid  =  g.minor_id  AND  

      g.name 
=   ' MS_Description '   LEFT   OUTER   JOIN

      sys.extended_properties f 
ON  d.id  =  f.major_id  AND  f.minor_id  =   0   AND  

      f.name 
=   ' MS_Description '

ORDER   BY  d.name, 字段序号


2. sqlServer数据库字典--索引.sql

SELECT   TOP   100   PERCENT   -- a.id, 

       CASE   WHEN  b.keyno  =   1   THEN  c.name  ELSE   ''   END   AS  表名, 

      
CASE   WHEN  b.keyno  =   1   THEN  a.name  ELSE   ''   END   AS  索引名称, d.name  AS  列名, 

      b.keyno 
AS  索引顺序,  CASE  indexkey_property(c.id, b.indid, b.keyno,  ' isdescending '

      
WHEN   1   THEN   ' 降序 '   WHEN   0   THEN   ' 升序 '   END   AS  排序,  CASE   WHEN  p.id  IS   NULL  

      
THEN   ''   ELSE   ' '   END   AS  主键,  CASE   INDEXPROPERTY (c.id,  ' IsClustered '

      
WHEN   1   THEN   ' '   WHEN   0   THEN   ''   END   AS  聚集,  ' IsUnique ' WHEN   1   THEN   ' '   WHEN   0   THEN   ''   END   AS  唯一, 

      
CASE   WHEN  e.id  IS   NULL   THEN   ''   ELSE   ' '   END   AS  唯一约束, 

      a.OrigFillFactor 
AS  填充因子, c.crdate  AS  创建时间, c.refdate  AS  更改时间

FROM  dbo.sysindexes a  INNER   JOIN

      dbo.sysindexkeys b 
ON  a.id  =  b.id  AND  a.indid  =  b.indid  INNER   JOIN

      dbo.syscolumns d 
ON  b.id  =  d.id  AND  b.colid  =  d.colid  INNER   JOIN

      dbo.sysobjects c 
ON  a.id  =  c.id  AND  c.xtype  =   ' U '   LEFT   OUTER   JOIN

      dbo.sysobjects e 
ON  e.name  =  a.name  AND  e.xtype  =   ' UQ '   LEFT   OUTER   JOIN

      dbo.sysobjects p 
ON  p.name  =  a.name  AND  p.xtype  =   ' PK '

WHERE  ( OBJECTPROPERTY (a.id, N ' IsUserTable ' =   1 AND  ( OBJECTPROPERTY (a.id, 

      N
' IsMSShipped ' =   0 AND  ( INDEXPROPERTY (a.id,  ' IsAutoStatistics ' =   0 )

ORDER   BY  c.name, b.keyno


3. sqlServer数据库字典--表.视图.函数.存储过程.触发器.主键.外键.约束.规则.sql

SELECT   disTINCT  

      
TOP   100   PERCENT   isnull (p.name, '' AS  父对象, o.xtype, 

      
CASE  o.xtype  WHEN   ' C '   THEN   ' CHECK 约束 '   WHEN   ' D '   THEN   ' 认值或DEFAULT约束 '

       
WHEN   ' F '   THEN   ' FOREIGNKEY约束 '   WHEN   ' L '   THEN   ' 日志 '   WHEN   ' FN '   THEN   ' 标量函数 '

       
WHEN   ' IF '   THEN   ' 内嵌表函数 '   WHEN   ' P '   THEN   ' 存储过程 '   WHEN   ' PK '   THEN   ' PRIMARYKEY约束 '

       
WHEN   ' RF '   THEN   ' 复制筛选存储过程 '   WHEN   ' S '   THEN   ' 系统表 '   WHEN   ' TF '   THEN   ' 函数 '

       
WHEN   ' TR '   THEN   ' 触发器 '   WHEN   ' U '   THEN   ' 用户 '   WHEN   ' UQ '   THEN   ' UNIQUE 约束 '

       
WHEN   ' V '   THEN   ' 视图 '   WHEN   ' X '   THEN   ' 扩展存储过程 '   WHEN   ' R '   THEN   ' 规则 '   ELSE   NULL

       
END   AS  类型, o.name  AS  对象名, o.crdate  AS  创建时间, o.refdate  AS  更改时间, 

      c.
text   AS  声明语句, OBJECTPROPERTY (o.id, N ' IsMSShipped ' )

FROM  dbo.sysobjects o  Left   JOIN

      dbo.sysobjects p 
ON  o.parent_obj  =  p.id  LEFT   OUTER   JOIN

      dbo.syscomments c 
ON  o.id  =  c.id

WHERE   -- (o.xtype IN ('C','D','F','PK','UQ','L','FN','IF','TF','TR','P','R','RF','X','S','U','V')) AND 

      ( OBJECTPROPERTY (o.id, N ' IsMSShipped ' =   0 AND  ( isnull (p.name, '' <>  N ' dtproperties ' )

ORDER   BY  o.xtype  DESC

 

 

转自:http://www.cnblogs.com/drc/archive/2007/11/09/954123.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐