sys.database_principals (Transact-SQL)
Devuelve una fila para cada entidad de seguridad de una base de datos de SQL Server.
Se aplica a: SQL Server (SQL Server 2008 a versión actual), Windows Azure SQL Database (Versión inicial a versión actual). |
Nombre de columna |
Tipo de datos |
Descripción |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
name |
sysname |
Nombre de la entidad de seguridad, único en la base de datos. |
|||||||||||
principal_id |
int |
Id. de la entidad de seguridad, único en la base de datos. |
|||||||||||
tipo |
char(1) |
Tipo de entidad de seguridad: S = Usuario de SQL U = Usuario de Windows G = Grupo de Windows A = Rol de aplicación R = Rol de base de datos C = Usuario asignado a un certificado K = Usuario asignado a una clave asimétrica |
|||||||||||
type_desc |
nvarchar(60) |
Descripción del tipo de la entidad de seguridad. SQL_USER WINDOWS_USER WINDOWS_GROUP APPLICATION_ROLE DATABASE_ROLE CERTIFICATE_MAPPED_USER ASYMMETRIC_KEY_MAPPED_USER |
|||||||||||
default_schema_name |
sysname |
Nombre que se utilizará cuando el nombre SQL no especifique un esquema. Null para entidades de seguridad que no son del tipo S, U o A. |
|||||||||||
create_date |
datetime |
Hora en que se creó la entidad de seguridad. |
|||||||||||
modify_date |
datetime |
Hora en que se modificó por última vez la entidad de seguridad. |
|||||||||||
owning_principal_id |
int |
Id. de la entidad de seguridad propietaria de esta entidad de seguridad. dbo debe ser propietario de todas las entidades de seguridad excepto Roles de base de datos. |
|||||||||||
sid |
varbinary(85) |
SID (identificador de seguridad) de la entidad de seguridad. NULL para SYS e INFORMATION SCHEMAS. |
|||||||||||
is_fixed_role |
bit |
Si es 1, esta fila representa una entrada para uno de los roles fijos de base de datos: db_owner, db_accessadmin, db_datareader, db_datawriter, db_ddladmin, db_securityadmin, db_backupoperator, db_denydatareader, db_denydatawriter. |
|||||||||||
authentication_type |
int |
Tipo de autenticación.
|
|||||||||||
authentication_type_desc |
nvarchar(60) |
Descripción del tipo de autenticación.
|
|||||||||||
default_language_name |
sysname |
Idioma predeterminado para esta entidad de seguridad.
|
|||||||||||
default_language_lcid |
int |
LCID predeterminado para esta entidad de seguridad.
|
Comentarios
Las propiedades PasswordLastSetTime están disponibles en todas las configuraciones admitidas de SQL Server, pero las demás propiedades solo están disponibles cuando SQL Server se ejecuta en Windows Server 2003 y tanto CHECK_POLICY como CHECK_EXPIRATION están habilitadas. Para obtener más información, vea Directiva de contraseñas.
Permisos
Cualquier usuario puede ver su propio nombre de usuario, los usuarios del sistema y los roles fijos de base de datos. Para ver otros usuarios, requiere ALTER ANY USER o un permiso en el usuario. Para ver los roles definidos por el usuario, se requiere ALTER ANY ROLE o la pertenencia al rol.
Ejemplos
A: Enumerar todos los permisos de entidades de seguridad de base de datos
La consulta siguiente enumera los permisos que se otorgan o deniegan específicamente a las entidades de seguridad de base de datos.
Importante
Los permisos de roles fijos de base de datos no aparecen en sys.database_permissions.Por tanto, es posible que las entidades de seguridad de base de datos tengan permisos adicionales que no aparezcan aquí.
SELECT pr.principal_id, pr.name, pr.type_desc,
pr.authentication_type_desc, pe.state_desc, pe.permission_name
FROM sys.database_principals AS pr
JOIN sys.database_permissions AS pe
ON pe.grantee_principal_id = pr.principal_id;
B: Enumerar permisos para objetos de esquema en una base de datos
La consulta siguiente se combina con sys.database_principals y sys.database_permissions para que sys.objects y sys.schemas enumeren los permisos otorgados o denegados a objetos de esquema específicos.
SELECT pr.principal_id, pr.name, pr.type_desc,
pr.authentication_type_desc, pe.state_desc,
pe.permission_name, s.name + '.' + o.name AS ObjectName
FROM sys.database_principals AS pr
JOIN sys.database_permissions AS pe
ON pe.grantee_principal_id = pr.principal_id
JOIN sys.objects AS o
ON pe.major_id = o.object_id
JOIN sys.schemas AS s
ON o.schema_id = s.schema_id;
Vea también
Referencia
Vistas de catálogo (Transact-SQL)
Vistas de catálogo de seguridad (Transact-SQL)