Поделиться через


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)
Роли уровня сервера
Субъекты (ядро СУБД)