SQL Server元数据表和列描述

时间:2012-07-25 16:40:53

标签: sql sql-server system-tables

  

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

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

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

感谢。

2 个答案:

答案 0 :(得分:0)

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

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

另外,试试这个:

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

'value'列和第二个'name'列(属于sysobjects)是您正在寻找的。

希望有所帮助。

答案 1 :(得分:0)

要获取描述数据,您需要摆弄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