sys.database_principals (Transact-SQL)

Devuelve una fila para cada entidad de seguridad de una base de datos.

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.

Valor

Descripción

0

Sin autenticación

1

Autenticación de instancias

2

Autenticación de base de datos

3

Autenticación de Windows

No se aplica a SQL Azure.

authentication_type_desc

nvarchar(60)

Descripción del tipo de autenticación.

Valor

Descripción

NONE

Sin autenticación

INSTANCE

Autenticación de instancias

DATABASE

Autenticación de base de datos

WINDOWS

Autenticación de Windows

No se aplica a SQL Azure.

default_language_name

sysname

Idioma predeterminado para esta entidad de seguridad.

No se aplica a SQL Azure.

default_language_lcid

int

LCID predeterminado para esta entidad de seguridad.

No se aplica a SQL Azure.

Comentarios

Las propiedades PasswordLastSetTime están disponibles en todas las configuraciones compatibles 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.

Nota importanteImportante

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)

Conceptos

Entidades de seguridad (motor de base de datos)