现在的位置: 首页 > 综合 > 正文

数据字SQL代码的总结

2013年07月30日 ⁄ 综合 ⁄ 共 2763字 ⁄ 字号 评论关闭

网上有很多SQL SERVER数据库字典的SQL语句,七零八落,我在工作整理了一下思路,总结SQL代码如下。数据库字典包括表结构(2K2005)、索引和主键.外键.约束.视图.函数.存储过程.触发器。可以在企业管理器、查询分析器中简单执行,直接了当的查出SQL2KSQL2005的所有数据字典,方便文档的编写,希望对大家有帮助。

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, a.name, 'Scale'), 0AS 小数位数
      
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.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, a.name, 'Scale'), 0AS 小数位数
      
CASE WHEN a.isnullable = 1 THEN '√' ELSE '' END AS 允许空ISNULL(e.text''
      
AS 默认值ISNULL(g.[value]''AS

抱歉!评论已关闭.