Создание словаря данных для базы данных SQL Server - PullRequest
6 голосов
/ 27 июня 2011

Я пытаюсь создать словарь данных для таблицы в моей базе данных.

В идеале я хотел бы экспортировать имена столбцов, тип данных, ограничения и расширенные описания свойств.

Как этого достичь?

Ответы [ 2 ]

6 голосов
/ 27 марта 2015

Вы можете попробовать этот запрос:

SELECT
    IC.COLUMN_NAME,
    IC.Data_TYPE,
    EP.[Value] as [MS_Description],
    IKU.CONSTRAINT_NAME, 
    ITC.CONSTRAINT_TYPE,
    IC.IS_NULLABLE
 FROM
    INFORMATION_SCHEMA.COLUMNS IC
    INNER JOIN sys.columns sc ON OBJECT_ID(QUOTENAME(IC.TABLE_SCHEMA) + '.' + QUOTENAME(IC.TABLE_NAME)) = sc.[object_id] AND IC.COLUMN_NAME = sc.name
    LEFT OUTER JOIN sys.extended_properties EP ON sc.[object_id] = EP.major_id AND sc.[column_id] = EP.minor_id AND EP.name = 'MS_Description' AND EP.class = 1 
    LEFT OUTER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE IKU ON IKU.COLUMN_NAME = IC.COLUMN_NAME and IKU.TABLE_NAME = IC.TABLE_NAME and IKU.TABLE_CATALOG = IC.TABLE_CATALOG
    LEFT OUTER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS ITC ON ITC.TABLE_NAME = IKU.TABLE_NAME and ITC.CONSTRAINT_NAME = IKU.CONSTRAINT_NAME
WHERE IC.TABLE_CATALOG = 'Database'
  and IC.TABLE_SCHEMA = 'dbo'
  and IC.TABLE_NAME = 'Table'
order by IC.ORDINAL_POSITION

или генератор документации схемы, такой как Dataedo (в котором я являюсь менеджером по продукту) .

5 голосов
/ 27 июня 2011

Вы можете получить это с помощью комбинации SELECT * FROM INFORMATION_SCHEMA.COLUMNS и использования fn_listextendedproperty.

...