Выберите расширенные свойства ролей

Я хотел бы получить расширенные свойства для ролей базы данных. Я могу получить список всех расширенных свойств для пользователей с помощью этой команды:

use db;
SELECT * FROM fn_listextendedproperty (null, 'user', null, default, default, default, default)

Но я не могу найти правильные типы уровней для ролей.

Используя следующую команду, я вижу, что роли class 4 и их major id это 10.

SELECT * FROM sys.extended_properties 

Так что я могу получить то, что я ищу, с помощью следующей команды:

SELECT * FROM sys.extended_properties WHERE class = 4 AND major_id = 10

Но я предпочитаю получить список с fn_listextendedproperty функция.

1 ответ

Решение

Из sys.extended_properties (Transact-SQL)

major_id: идентификатор элемента, для которого существует расширенное свойство, интерпретируется в соответствии с его классом.

Так major_id = 10 это principal_id роли в sys.database_principals,

А также class = 4 это участники базы данных, пользователи и роли.

Ваш первый запрос, который использует fn_listextendedproperty должен вернуть список пользователей и ролей с obj_type = USER для обоих типов.

Вам нужно использовать sys.extended_properties и присоединиться к sys.database_principals выяснить, что такое пользователь и что такое роль.

Другие вопросы по тегам