利用三个SQL视图查出所有SQL Server数据库字典

我们知道,数据库字典包括表结构、索引和主键、外键、约束、视图、函数、存储过程、触发器和规则。本文我们总结了三个SQL视图来查询数据字典的SQL语句示例,利用它可以直接了当地查出SQL2K及SQL2005的所有数据字典,方便文档的编写,希望对大家有帮助。

创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都做网站、网站制作、乌兰察布网络推广、小程序开发、乌兰察布网络营销、乌兰察布企业策划、乌兰察布品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供乌兰察布建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com

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

 
 
 
  1. SELECT TOP 100 PERCENT --a.id,  
  2.  
  3. CASE WHEN a.colorder = 1 THEN d.name ELSE '' END AS 表名,  
  4.  
  5. CASE WHEN a.colorder = 1 THEN isnull(f.value, '') ELSE '' END AS 表说明,  
  6.  
  7. a.colorder AS 字段序号, a.name AS 字段名, CASE WHEN COLUMNPROPERTY(a.id,  
  8.  
  9. a.name, 'IsIdentity') = 1 THEN '√' ELSE '' END AS 标识,  
  10.  
  11. CASE WHEN EXISTS  
  12.  
  13. (SELECT 1  
  14.  
  15. FROM dbo.sysindexes si INNER JOIN  
  16.  
  17. dbo.sysindexkeys sik ON si.id = sik.id AND si.indid = sik.indid INNER JOIN  
  18.  
  19. dbo.syscolumns sc ON sc.id = sik.id AND sc.colid = sik.colid INNER JOIN  
  20.  
  21. dbo.sysobjects so ON so.name = si.name AND so.xtype = 'PK' 
  22.  
  23. WHERE sc.id = a.id AND sc.colid = a.colid) THEN '√' ELSE '' END AS 主键,  
  24.  
  25. b.name AS 类型, a.length AS 长度, COLUMNPROPERTY(a.id, a.name, 'PRECISION')  
  26.  
  27. AS 精度, ISNULL(COLUMNPROPERTY(a.id, a.name, 'Scale'), 0) AS 小数位数,  
  28.  
  29. CASE WHEN a.isnullable = 1 THEN '√' ELSE '' END AS 允许空, ISNULL(e.text, '')  
  30.  
  31. AS 默认值, ISNULL(g.[value], '') AS 字段说明, d.crdate AS 创建时间,  
  32.  
  33. CASE WHEN a.colorder = 1 THEN d.refdate ELSE NULL END AS 更改时间  
  34.  
  35. FROM dbo.syscolumns a LEFT OUTER JOIN  
  36.  
  37. dbo.systypes b ON a.xtype = b.xusertype INNER JOIN  
  38.  
  39. dbo.sysobjects d ON a.id = d.id AND d.xtype = 'U' AND  
  40.  
  41. d.status >= 0 LEFT OUTER JOIN  
  42.  
  43. dbo.syscomments e ON a.cdefault = e.id LEFT OUTER JOIN  
  44.  
  45. dbo.sysproperties g ON a.id = g.id AND a.colid = g.smallid AND  
  46.  
  47. g.name = 'MS_Description' LEFT OUTER JOIN  
  48.  
  49. dbo.sysproperties f ON d.id = f.id AND f.smallid = 0 AND  
  50.  
  51. f.name = 'MS_Description' 
  52.  
  53. ORDER BY d.name, a.colorder  
  54.  
  55. SqlServer2005数据库字典--表结构.sql  
  56.  
  57. SELECT TOP 100 PERCENT --a.id,  
  58.  
  59. CASE WHEN a.colorder = 1 THEN d.name ELSE '' END AS 表名,  
  60.  
  61. CASE WHEN a.colorder = 1 THEN isnull(f.value, '') ELSE '' END AS 表说明,  
  62.  
  63. a.colorder AS 字段序号, a.name AS 字段名, CASE WHEN COLUMNPROPERTY(a.id,  
  64.  
  65. a.name, 'IsIdentity') = 1 THEN '√' ELSE '' END AS 标识,  
  66.  
  67. CASE WHEN EXISTS  
  68.  
  69. (SELECT 1  
  70.  
  71. FROM dbo.sysindexes si INNER JOIN  
  72.  
  73. dbo.sysindexkeys sik ON si.id = sik.id AND si.indid = sik.indid INNER JOIN  
  74.  
  75. dbo.syscolumns sc ON sc.id = sik.id AND sc.colid = sik.colid INNER JOIN  
  76.  
  77. dbo.sysobjects so ON so.name = si.name AND so.xtype = 'PK' 
  78.  
  79. WHERE sc.id = a.id AND sc.colid = a.colid) THEN '√' ELSE '' END AS 主键,  
  80.  
  81. b.name AS 类型, a.length AS 长度, COLUMNPROPERTY(a.id, a.name, 'PRECISION')  
  82.  
  83. AS 精度, ISNULL(COLUMNPROPERTY(a.id, a.name, 'Scale'), 0) AS 小数位数,  
  84.  
  85. CASE WHEN a.isnullable = 1 THEN '√' ELSE '' END AS 允许空, ISNULL(e.text, '')  
  86.  
  87. AS 默认值, ISNULL(g.[value], '') AS 字段说明, d.crdate AS 创建时间,  
  88.  
  89. CASE WHEN a.colorder = 1 THEN d.refdate ELSE NULL END AS 更改时间  
  90.  
  91. FROM dbo.syscolumns a LEFT OUTER JOIN  
  92.  
  93. dbo.systypes b ON a.xtype = b.xusertype INNER JOIN  
  94.  
  95. dbo.sysobjects d ON a.id = d.id AND d.xtype = 'U' AND  
  96.  
  97. d.status >= 0 LEFT OUTER JOIN  
  98.  
  99. dbo.syscomments e ON a.cdefault = e.id LEFT OUTER JOIN  
  100.  
  101. sys.extended_properties g ON a.id = g.major_id AND a.colid = g.minor_id AND  
  102.  
  103. g.name = 'MS_Description' LEFT OUTER JOIN  
  104.  
  105. sys.extended_properties f ON d.id = f.major_id AND f.minor_id = 0 AND  
  106.  
  107. f.name = 'MS_Description' 
  108.  
  109. ORDER BY d.name, 字段序号 

2. SQL Server数据库字典--索引.sql

 
 
 
  1. SELECT TOP 100 PERCENT --a.id,  
  2.  
  3. CASE WHEN b.keyno = 1 THEN c.name ELSE '' END AS 表名,  
  4.  
  5. CASE WHEN b.keyno = 1 THEN a.name ELSE '' END AS 索引名称, d.name AS 列名,  
  6.  
  7. b.keyno AS 索引顺序, CASE indexkey_property(c.id, b.indid, b.keyno, 'isdescending')  
  8.  
  9. WHEN 1 THEN '降序' WHEN 0 THEN '升序' END AS 排序, CASE WHEN p.id IS NULL  
  10.  
  11. THEN '' ELSE '√' END AS 主键, CASE INDEXPROPERTY(c.id, a.name, 'IsClustered')  
  12.  
  13. WHEN 1 THEN '√' WHEN 0 THEN '' END AS 聚集, CASE INDEXPROPERTY(c.id,  
  14.  
  15. a.name, 'IsUnique') WHEN 1 THEN '√' WHEN 0 THEN '' END AS ***,  
  16.  
  17. CASE WHEN e.id IS NULL THEN '' ELSE '√' END AS ***约束,  
  18.  
  19. a.OrigFillFactor AS 填充因子, c.crdate AS 创建时间, c.refdate AS 更改时间  
  20.  
  21. FROM dbo.sysindexes a INNER JOIN  
  22.  
  23. dbo.sysindexkeys b ON a.id = b.id AND a.indid = b.indid INNER JOIN  
  24.  
  25. dbo.syscolumns d ON b.id = d.id AND b.colid = d.colid INNER JOIN  
  26.  
  27. dbo.sysobjects c ON a.id = c.id AND c.xtype = 'U' LEFT OUTER JOIN  
  28.  
  29. dbo.sysobjects e ON e.name = a.name AND e.xtype = 'UQ' LEFT OUTER JOIN  
  30.  
  31. dbo.sysobjects p ON p.name = a.name AND p.xtype = 'PK' 
  32.  
  33. WHERE (OBJECTPROPERTY(a.id, N'IsUserTable') = 1) AND (OBJECTPROPERTY(a.id,  
  34.  
  35. N'IsMSShipped') = 0) AND (INDEXPROPERTY(a.id, a.name, 'IsAutoStatistics') = 0)  
  36.  
  37. ORDER BY c.name, a.name, b.keyno 

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

 
 
 
  1. SELECT DISTINCT  
  2.  
  3. TOP 100 PERCENT isnull(p.name,'') AS 父对象, o.xtype,  
  4.  
  5. CASE o.xtype WHEN 'C' THEN 'CHECK 约束' WHEN 'D' THEN '默认值或DEFAULT约束'  
  6.  
  7. WHEN 'F' THEN 'FOREIGNKEY约束' WHEN 'L' THEN '日志' WHEN 'FN' THEN '标量函数'  
  8.  
  9. WHEN 'IF' THEN '内嵌表函数' WHEN 'P' THEN '存储过程' WHEN 'PK' THEN 'PRIMARYKEY约束'  
  10.  
  11. WHEN 'RF' THEN '复制筛选存储过程' WHEN 'S' THEN '系统表' WHEN 'TF' THEN '表函数'  
  12.  
  13. WHEN 'TR' THEN '触发器' WHEN 'U' THEN '用户表' WHEN 'UQ' THEN 'UNIQUE 约束'  
  14.  
  15. WHEN 'V' THEN '视图' WHEN 'X' THEN '扩展存储过程' WHEN 'R' THEN '规则' ELSE NULL  
  16.  
  17. END AS 类型, o.name AS 对象名, o.crdate AS 创建时间, o.refdate AS 更改时间,  
  18.  
  19. c.text AS 声明语句,OBJECTPROPERTY(o.id, N'IsMSShipped')  
  20.  
  21. FROM dbo.sysobjects o Left JOIN  
  22.  
  23. dbo.sysobjects p ON o.parent_obj = p.id LEFT OUTER JOIN  
  24.  
  25. dbo.syscomments c ON o.id = c.id  
  26.  
  27. WHERE --(o.xtype IN ('C','D','F','PK','UQ','L','FN','IF','TF','TR','P','R','RF','X','S','U','V')) AND  
  28.  
  29. (OBJECTPROPERTY(o.id, N'IsMSShipped') = 0) AND (isnull(p.name,'') <> N'dtproperties') 

关于使用SQL视图查询SQL Server数据库字典的知识就介绍到这里了,希望本次的介绍能够对您有所收获!

【编辑推荐】

  1. SQL Server 2005数据库镜像相关知识概述
  2. 一个SQL Server数据库删除数据集中重复数据的例子
  3. SQLServer 2008 R2数据库SSAS建模及扩展能力详解
  4. 如何用触发器实现记录数据库表和记录更改日志的操作
  5. SQL Server数据库使用DBCC ShowContig检查索引碎片

标题名称:利用三个SQL视图查出所有SQL Server数据库字典
当前地址:http://www.hantingmc.com/qtweb/news37/39387.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联