2012-07-25 32 views
1

可能重复:
SQL Server: Extract Table Meta-Data (description, fields and their data types)SQL Server的元数据表和列descrption

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

如果是这样,有没有一种方法来编程更新它们呢?

谢谢。

+1

可以看出你的意思是通过添加sp_addextendedproperty垃圾摆弄?恕我直言,你的模式应该记录在数据库之外(并应涉及源代码管理)。 – 2012-07-25 16:55:20

+0

sys.tables和sys.columns是你的新朋友 – SQLMason 2012-07-25 17:15:58

回答

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 

的“价值”栏和第二个“名”列(属于系统对象)是什么你正在寻找。

希望有所帮助。

0

要获得描述数据,您需要使用系统对象/ 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