Таблица метаданных SQL Server и описание столбца

Возможный дубликат:
SQL Server: извлечение метаданных таблицы (описание, поля и их типы данных)

Я просто хочу спросить, есть ли способ программно получить описания таблиц и столбцов из SQL Server 2008? Это описания, которые вы можете ввести при использовании пользовательского интерфейса.

И если да, то есть ли способ обновить их программно?

Спасибо.


person dinoD    schedule 25.07.2012    source источник
comment
Вы имеете в виду мусор, добавленный с помощью процедуры sp_addextendedproperty? IMHO ваша схема должна быть задокументирована вне базы данных (и должна включать контроль версий).   -  person Aaron Bertrand    schedule 25.07.2012
comment
sys.tables и sys.columns - вы новые друзья   -  person SQLMason    schedule 25.07.2012


Ответы (2)


Если вы хотите получить «описания», которые вы установили с помощью пользовательского интерфейса MSSMS, вам необходимо запросить 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) - это то, что вы ищете.

Надеюсь, это поможет.

person Gaspa79    schedule 25.07.2012

Чтобы получить данные описания, вам нужно повозиться с 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
person NG.    schedule 25.07.2012