为SQL Server数据库生成数据字典

时间:2011-06-27 01:37:53

标签: sql-server sql-server-2008 data-dictionary

我正在尝试为数据库中的表生成数据字典。

理想情况下,我想导出列名,数据类型,限制和扩展属性描述。

如何实现这一目标?

3 个答案:

答案 0 :(得分:6)

您可以尝试此查询:

SELECT
    IC.COLUMN_NAME,
    IC.Data_TYPE,
    EP.[Value] as [MS_Description],
    IKU.CONSTRAINT_NAME, 
    ITC.CONSTRAINT_TYPE,
    IC.IS_NULLABLE
 FROM
    INFORMATION_SCHEMA.COLUMNS IC
    INNER JOIN sys.columns sc ON OBJECT_ID(QUOTENAME(IC.TABLE_SCHEMA) + '.' + QUOTENAME(IC.TABLE_NAME)) = sc.[object_id] AND IC.COLUMN_NAME = sc.name
    LEFT OUTER JOIN sys.extended_properties EP ON sc.[object_id] = EP.major_id AND sc.[column_id] = EP.minor_id AND EP.name = 'MS_Description' AND EP.class = 1 
    LEFT OUTER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE IKU ON IKU.COLUMN_NAME = IC.COLUMN_NAME and IKU.TABLE_NAME = IC.TABLE_NAME and IKU.TABLE_CATALOG = IC.TABLE_CATALOG
    LEFT OUTER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS ITC ON ITC.TABLE_NAME = IKU.TABLE_NAME and ITC.CONSTRAINT_NAME = IKU.CONSTRAINT_NAME
WHERE IC.TABLE_CATALOG = 'Database'
  and IC.TABLE_SCHEMA = 'dbo'
  and IC.TABLE_NAME = 'Table'
order by IC.ORDINAL_POSITION

或架构文档生成器,如Dataedo (我是其产品经理)

答案 1 :(得分:5)

您可以通过SELECT * FROM INFORMATION_SCHEMA.COLUMNS和使用fn_listextendedproperty的组合来实现此目标。

答案 2 :(得分:0)

要生成SQL Server数据库的数据字典,建议您使用ERBuilder data modeller,只需执行以下步骤:

  • 要生成ER图,必须首先对数据库进行反向工程选择:菜单-> 文件-> 反向工程 ER图将显示在ERBuilder中。
  • 要生成数据库的数据字典,请选择:菜单-> 工具-> 生成模型文档