Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите модифицировать вью, документирующую БД  [new]
uaggster
Member

Откуда:
Сообщений: 1056
Коллеги, есть вот такая вьюшка, "документирующая" БД.
CREATE view [common].[DatabaseDescription] as
SELECT top (select 100) percent 
	IsNull(S.name, 'DATABASE') as [Schema Name], o.object_id, o.type_desc [Type], O.name AS [Object Name], ep.value AS [Extended property]
FROM sys.extended_properties EP
	LEFT JOIN sys.all_objects O ON ep.major_id = O.object_id 
	LEFT JOIN sys.schemas S on O.schema_id = S.schema_id
	LEFT JOIN sys.columns AS c ON ep.major_id = c.object_id AND ep.minor_id = c.column_id
	Where ep.name=N'MS_Description'
Order by 1, 2


GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Возвращает список объектов БД с заполненным описанием (расширенное свойство MS_Description)' , @level0type=N'SCHEMA',@level0name=N'common', @level1type=N'VIEW',@level1name=N'DatabaseDescription'
GO

К сожалению, она неверно документирует пользователей, с заполненным описанием, схемы и роли (если такое описание заполнено).
И еще хотелось бы, чтобы она верно возвращала описание столбцов таблиц (если таковые будут аналогичным образом описаны).
Помогите переписать? Я плаваю в системных представлениях.
3 авг 15, 18:27    [17970507]     Ответить | Цитировать Сообщить модератору
 Re: Помогите модифицировать вью, документирующую БД  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
SELECT o.[object_id], c.name, s.name, o.name, o.type_desc, ep.value
FROM sys.columns c
JOIN sys.objects o ON c.[object_id] = o.[object_id]
JOIN sys.schemas s ON o.[schema_id] = s.[schema_id]
LEFT JOIN (
    SELECT value, major_id, minor_id 
    FROM sys.extended_properties WITH(NOLOCK)
    WHERE class = 1 AND name = 'MS_Description'
) ep ON ep.major_id = c.[object_id] AND ep.minor_id = c.column_id
WHERE o.[type] IN ('U', 'V')
ORDER BY o.[object_id], c.column_id


немного не понял сути вопроса. Если нужно список столбцов и их еxtended_properties, то запрос выше.
4 авг 15, 09:50    [17972186]     Ответить | Цитировать Сообщить модератору
 Re: Помогите модифицировать вью, документирующую БД  [new]
uaggster
Member

Откуда:
Сообщений: 1056
Гм... Нет. Не работает.

Перефразирую вопрос.
Предыдущий запрос возвращает что-то типа этого:
Schema Nameobject_idType Object NameExtended property
common338100245SQL_STORED_PROCEDUREGet_UserGroupsВозвращает список AD групп для данного логина


Всё вроде нормально. Но он возвращает и такое:

Schema Nameobject_idType Object NameExtended property
sys5SYSTEM_TABLEsysrowsetsСхема для общих данных и функций портала
sys5SYSTEM_TABLEsysrowsetsПользователь портала


А хотелось бы получить там имя схемы, тип "Схема" и т.д.
Ну и по пользователю - тоже.
У них есть то же расширенное свойство.
4 авг 15, 14:35    [17973756]     Ответить | Цитировать Сообщить модератору
 Re: Помогите модифицировать вью, документирующую БД  [new]
Glory
Member

Откуда:
Сообщений: 104751
uaggster
А хотелось бы получить там имя схемы, тип "Схема" и т.д.
Ну и по пользователю - тоже.
У них есть то же расширенное свойство.

И что вам мешает включить в запрос таблицЫ, где хранятся метаданные о столбцах, таблицах, схемах, пользователях и тп ?
4 авг 15, 14:39    [17973802]     Ответить | Цитировать Сообщить модератору
 Re: Помогите модифицировать вью, документирующую БД  [new]
uaggster
Member

Откуда:
Сообщений: 1056
Glory, то, что я с трудом представляю, где это живет. Плаваю. :)
4 авг 15, 14:41    [17973823]     Ответить | Цитировать Сообщить модератору
 Re: Помогите модифицировать вью, документирующую БД  [new]
Glory
Member

Откуда:
Сообщений: 104751
uaggster
то, что я с трудом представляю, где это живет. Плаваю.

И что вам мешает это узнать ?
4 авг 15, 14:43    [17973830]     Ответить | Цитировать Сообщить модератору
 Re: Помогите модифицировать вью, документирующую БД  [new]
uaggster
Member

Откуда:
Сообщений: 1056
Glory, неумение правильно задать вопрос гуглу, это ж очевидно :)
4 авг 15, 14:47    [17973860]     Ответить | Цитировать Сообщить модератору
 Re: Помогите модифицировать вью, документирующую БД  [new]
Glory
Member

Откуда:
Сообщений: 104751
uaggster
неумение правильно задать вопрос гуглу, это ж очевидно

Т.е. вы откуда то все знаете про sys.extended_properties, sys.all_objects, sys.schemas и sys.columns, но не смогли узнать, в какой таблице mssql хранит пользователей ?
4 авг 15, 14:50    [17973883]     Ответить | Цитировать Сообщить модератору
 Re: Помогите модифицировать вью, документирующую БД  [new]
uaggster
Member

Откуда:
Сообщений: 1056
О, кстати. Пока формулировал, почему не могу спросить у гугла - спросил. Спасибо :)
4 авг 15, 14:55    [17973912]     Ответить | Цитировать Сообщить модератору
 Re: Помогите модифицировать вью, документирующую БД  [new]
Glory
Member

Откуда:
Сообщений: 104751
uaggster
Пока формулировал, почему не могу спросить у гугла - спросил.

Вы не пробовали использовать хелп самого продукта ?
4 авг 15, 15:06    [17973990]     Ответить | Цитировать Сообщить модератору
 Re: Помогите модифицировать вью, документирующую БД  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
SELECT o.[object_id], c.name, s.name, o.name, o.type_desc, ep.value
FROM sys.columns c
JOIN sys.objects o ON c.[object_id] = o.[object_id]
JOIN sys.schemas s ON o.[schema_id] = s.[schema_id]
LEFT JOIN (
    SELECT value, major_id, minor_id 
    FROM sys.extended_properties
    WHERE class = 1 AND name = 'MS_Description'
) ep ON ep.major_id = c.[object_id] AND ep.minor_id = c.column_id
WHERE o.is_ms_shipped = 1
	AND o.[type] NOT IN ('S', 'IT')
ORDER BY o.[object_id], c.column_id


как бы такой вариант вернет все пользовательские объекты на базе. Что еще Вам там нужно так и не понял.

Если операция разовая - есть триал http://www.red-gate.com/products/sql-development/sql-doc/

Там же Вы можете посмотреть какие запросы он посылает чтобы описать всю структуру БД (это так на случай если захочется сделать по примеру).
4 авг 15, 15:46    [17974251]     Ответить | Цитировать Сообщить модератору
 Re: Помогите модифицировать вью, документирующую БД  [new]
Glory
Member

Откуда:
Сообщений: 104751
AlanDenton
Что еще Вам там нужно так и не понял.

Есму нужны ВСЕ объекты, у которых могут быть описания. А это отнюдь не только sys.objects
4 авг 15, 15:54    [17974312]     Ответить | Цитировать Сообщить модератору
 Re: Помогите модифицировать вью, документирующую БД  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Glory
AlanDenton
Что еще Вам там нужно так и не понял.

Есму нужны ВСЕ объекты, у которых могут быть описания. А это отнюдь не только sys.objects

Исходя из https://msdn.microsoft.com/en-us/library/ms180047.aspx
тут почти весь каталог можно переберать :( потому как даже sys.all_objects не спасет :(
4 авг 15, 16:06    [17974381]     Ответить | Цитировать Сообщить модератору
 Re: Помогите модифицировать вью, документирующую БД  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Ну или можно начасть с
sp_helptext 'sys.fn_listextendedproperty'
4 авг 15, 16:10    [17974404]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить