sys.server_role_members (Transact-SQL)
Se aplica a: SQL Server Azure SQL Managed Instance Analytics 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)