sys.server_role_members (Transact-SQL)
Область применения: SQL Server Управляемый экземпляр SQL Azure Платформенная система аналитики (PDW)
Возвращает одну строку для каждого члена каждой предопределенной и заданной пользователем роли сервера.
Имя столбца | Тип данных | Description |
---|---|---|
role_principal_id | int | Идентификатор участника роли сервера. |
member_principal_id | int | Идентификатор элемента участника сервера. |
Чтобы добавить или удалить членство в роли сервера, используйте инструкцию ALTER SERVER ROLE (Transact-SQL).
Разрешения
Имена входа могут просматривать членство на сервере и просматривать principal_id членов предопределенных ролей сервера. Для просмотра всех членства в роли сервера требуется разрешение VIEW ANY DEFINITION или членство в предопределенных ролях сервера securityadmin .
Имена входа также могут просматривать членства в ролях, принадлежащих им.
В База данных SQL Azure члены роли сервера ##MS_DefinitionReader## могут запрашивать все представления каталога.
Дополнительные сведения см. в разделе Metadata Visibility Configuration.
Примеры
Примеры в этом разделе показывают, как работать с ролями на уровне сервера в Базе данных SQL Azure.
А. Возврат списка членов роли сервера
В следующем примере возвращаются имена и идентификаторы ролей и их членов.
SELECT roles.principal_id AS RolePrincipalID
, roles.name AS RolePrincipalName
, server_role_members.member_principal_id AS MemberPrincipalID
, members.name AS MemberPrincipalName
FROM sys.server_role_members AS server_role_members
INNER JOIN sys.server_principals AS roles
ON server_role_members.role_principal_id = roles.principal_id
INNER JOIN sys.server_principals AS members
ON server_role_members.member_principal_id = members.principal_id
;
Примечание.
В База данных SQL Azure имена входа SQL не сохраняются в представлении sys.server_principals
каталога. Таким образом, чтобы получить членство на уровне сервера в База данных SQL Azure, необходимо присоединить представление sys.sql_logins
каталога.
B. База данных SQL Azure. Перечисление всех субъектов (проверка подлинности SQL), являющихся членами роли уровня сервера.
Следующая инструкция возвращает всех участников любой предопределенной роли на уровне сервера с помощью представлений каталога sys.server_role_members
и sys.sql_logins
. Эту инструкцию необходимо выполнить в виртуальной базе данных.
SELECT
sql_logins.principal_id AS MemberPrincipalID
, sql_logins.name AS MemberPrincipalName
, roles.principal_id AS RolePrincipalID
, roles.name AS RolePrincipalName
FROM sys.server_role_members AS server_role_members
INNER JOIN sys.server_principals AS roles
ON server_role_members.role_principal_id = roles.principal_id
INNER JOIN sys.sql_logins AS sql_logins
ON server_role_members.member_principal_id = sql_logins.principal_id
;
GO
См. также
Представления каталога (Transact-SQL)
Представления каталога безопасности (Transact-SQL)
Роли уровня сервера
Субъекты (ядро СУБД)