sys.server_role_members (Transact-SQL)

Se aplica a:SQL ServerAzure SQL Managed InstanceAnalytics Platform System (PDW)

Devuelve una fila por cada miembro de cada rol fijo de servidor y cada rol de servidor definido por el usuario.

Nombre de la columna Tipo de datos Descripción
role_principal_id int Id. de la entidad de seguridad de servidor del rol.
member_principal_id int Id. de la entidad de seguridad de servidor del miembro.

Para agregar o quitar la pertenencia a roles de servidor, use la instrucción ALTER SERVER ROLE (Transact-SQL).

Permisos

Los inicios de sesión pueden ver su propia pertenencia a roles de servidor y pueden ver los principal_id de los miembros de los roles fijos de servidor. Para ver toda la pertenencia al rol de servidor, es necesario el permiso VIEW ANY DEFINITION o la pertenencia al rol fijo de servidor securityadmin .

Los inicios de sesión también pueden ver las pertenencias a roles que poseen.

En Azure SQL Database, los miembros del rol de servidor ##MS_DefinitionReader## pueden consultar todas las vistas de catálogo.

Para obtener más información, consulte Metadata Visibility Configuration.

Ejemplos

En los ejemplos de esta sección se muestra cómo trabajar con roles de nivel de servidor en Azure SQL Database.

A Lista devuelta de miembros de rol de servidor

En el ejemplo siguiente se devuelven los nombres e identificadores de los roles y sus miembros.

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  
;

Nota:

En Azure SQL Database, los inicios de sesión de SQL no se conservan en la vista de sys.server_principals catálogo. Por lo tanto, para recuperar la pertenencia a roles de nivel de servidor en Azure SQL Database, es necesario unir la vista sys.sql_logins de catálogo.

B. Azure SQL Database: Enumeración de todas las entidades de seguridad (autenticación de SQL) que son miembros de un rol de nivel de servidor

La instrucción siguiente devuelve todos los miembros de cualquier rol fijo de nivel de servidor mediante las vistas de catálogo sys.server_role_members y sys.sql_logins. Esta instrucción se debe ejecutar en la base de datos maestra virtual.

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  

Consulte también

Vistas de catálogo (Transact-SQL)
Vistas de catálogo de seguridad (Transact-SQL)
Roles de nivel de servidor
Entidades de seguridad (motor de base de datos)