【发布时间】:2011-06-27 01:37:52
【问题描述】:
我正在尝试为我的数据库中的表生成数据字典。
理想情况下,我想导出列名、数据类型、限制和扩展属性描述。
如何做到这一点?
【问题讨论】:
标签: sql-server sql-server-2008 data-dictionary
我正在尝试为我的数据库中的表生成数据字典。
理想情况下,我想导出列名、数据类型、限制和扩展属性描述。
如何做到这一点?
【问题讨论】:
标签: sql-server sql-server-2008 data-dictionary
你可以试试这个查询:
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这样的架构文档生成器(我是它的产品经理)。
【讨论】:
您可以通过SELECT * FROM INFORMATION_SCHEMA.COLUMNS 和fn_listextendedproperty 的组合来实现。
【讨论】:
ORA-00942: table or view does not exist
要生成你的 SQL Server 数据库的数据字典,我建议你使用ERBuilder data modeller,只需按照以下步骤:
要生成 ER 图,首先需要对数据库进行逆向工程,选择:菜单 -> 文件 -> 逆向工程 ER 图将显示在 ERBuilder 中。 要生成数据库的数据字典,请选择:菜单 -> 工具 -> 生成模型文档
【讨论】: