SQL Server 元数据表和列描述 [重复]

Posted

技术标签:

【中文标题】SQL Server 元数据表和列描述 [重复]【英文标题】:SQL Server meta data table and column descrption [duplicate] 【发布时间】:2012-07-25 16:40:53 【问题描述】:

可能重复:SQL Server: Extract Table Meta-Data (description, fields and their data types)

我只是想问一下是否有一种方法可以以编程方式从 SQL Server 2008 中检索表和列描述?这些是您在使用 UI 时可以输入的描述。

如果是这样,有没有办法以编程方式更新它们?

谢谢。

【问题讨论】:

您的意思是通过 sp_addextendedproperty 添加的垃圾吗?恕我直言,您的架构应该记录在数据库之外(并且应该涉及源代码控制)。 sys.tables 和 sys.columns 是你的新朋友 【参考方案1】:

如果您想检索使用 MSSMS 的 UI 设置的“描述”,您需要查询 sys.extended_properties。

首先执行select * from sys.extended_properties 并阅读值列中的一些记录以了解我的意思(您会在那里找到以前设置的描述)。稍后您将需要与 sysobjects 进行一些连接(我猜),以便知道哪个描述属于哪个表,然后您就可以开始了。如果您感到困惑,请在 google 中搜索更多信息 =)

另外,试试这个:

select * from sys.extended_properties
inner join sysobjects on sys.extended_properties.major_id = sysobjects.id

“值”列和第二个“名称”列(属于 sysobjects)是您要查找的内容。

希望对您有所帮助。

【讨论】:

【参考方案2】:

要获取描述数据,你需要摆弄 sysobjects/syscolumns

SELECT          u.name + '.' + t.name AS [table],
            td.value AS [table_desc],
                c.name AS [column],
                cd.value AS [column_desc]
FROM            sysobjects t
INNER JOIN  sysusers u
    ON          u.uid = t.uid
LEFT OUTER JOIN sys.extended_properties td
    ON          td.major_id = t.id
    AND         td.minor_id = 0
    AND         td.name = 'MS_Description'
INNER JOIN  syscolumns c
    ON          c.id = t.id
LEFT OUTER JOIN sys.extended_properties cd
    ON          cd.major_id = c.id
    AND         cd.minor_id = c.colid
    AND         cd.name = 'MS_Description'
WHERE t.type = 'u'
ORDER BY    t.name, c.colorder

一些信息可以在

找到
select * from INFORMATION_SCHEMA.TABLES
select * from INFORMATION_SCHEMA.COLUMNS

【讨论】:

以上是关于SQL Server 元数据表和列描述 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

将元数据库连接到 Sql Server

从扩展属性中获取元数据 (SQL Server)

SQL Server 2008 元数据

探索SQL Server元数据

SQL Server系统函数:元数据函数

如何从 sql server information_schema(元数据)中获取依赖表?