Выберите расширенные свойства ролей
Я хотел бы получить расширенные свойства для ролей базы данных. Я могу получить список всех расширенных свойств для пользователей с помощью этой команды:
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
выяснить, что такое пользователь и что такое роль.