我只是想问一下是否有办法以编程方式从 SQL Server 2008 中检索表和列描述?这些是您在使用 UI 时可以输入的描述。
如果是这样,有没有办法以编程方式更新它们?
谢谢。
我只是想问一下是否有办法以编程方式从 SQL Server 2008 中检索表和列描述?这些是您在使用 UI 时可以输入的描述。
如果是这样,有没有办法以编程方式更新它们?
谢谢。
如果要检索使用 MSSMS 的 UI 设置的“描述”,则需要查询 sys.extended_properties。
首先select * from sys.extended_properties
阅读 value 列中的一些记录以了解我的意思(您会在那里找到以前设置的描述)。稍后您将需要与 sysobjects 进行一些连接(我猜),以便知道哪个描述属于哪个表,然后您就可以开始了。如果您感到困惑,请在 google 中搜索更多信息 =)
另外,试试这个:
select * from sys.extended_properties
inner join sysobjects on sys.extended_properties.major_id = sysobjects.id
'value' 列和第二个 'name' 列(属于 sysobjects)是您要查找的内容。
希望有帮助。
要获取描述数据,您需要摆弄 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