sys.database_principals (Transact-SQL)
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Punto de conexión de análisis SQL en Microsoft Fabric Warehouse en Microsoft Fabric Base de datos SQL de Microsoft Fabric
Devuelve una fila para cada entidad de seguridad de una base de datos de SQL Server.
Nota:
Microsoft Entra ID era conocido anteriormente como Azure Active Directory (Azure AD).
Descripciones de columnas
Nombre de la 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. |
type | char(1) | Tipo de entidad de seguridad: A = Rol de aplicación C = Usuario asignado a un certificado E = Usuario externo de Microsoft Entra ID G = Grupo de Windows K = Usuario asignado a una clave asimétrica R = Rol de base de datos S = Usuario de SQL U = Usuario de Windows X = Grupo externo del grupo o aplicaciones de Microsoft Entra |
type_desc | nvarchar(60) | Descripción del tipo de entidad de seguridad. APPLICATION_ROLE CERTIFICATE_MAPPED_USER EXTERNAL_USER WINDOWS_GROUP ASYMMETRIC_KEY_MAPPED_USER DATABASE_ROLE SQL_USER WINDOWS_USER EXTERNAL_GROUPS |
default_schema_name | sysname | Nombre que se va a usar 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. De forma predeterminada, todos los roles fijos de base de datos son propiedad de dbo. |
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 | Válido para : SQL Server 2012 (11.x) y versiones posteriores. Tipo de autenticación. Estos son los valores posibles y sus descripciones. 0: sin autenticación 1: autenticación de instancia 2: autenticación de base de datos 3: autenticación de Windows 4: Autenticación de Microsoft Entra |
authentication_type_desc | nvarchar(60) | Válido para : SQL Server 2012 (11.x) y versiones posteriores. Descripción del tipo de autenticación. Estos son los valores posibles y sus descripciones. NONE : sin autenticaciónINSTANCE : autenticación de instanciaDATABASE : autenticación de base de datosWINDOWS : autenticación de WindowsEXTERNAL : Autenticación de Microsoft Entra |
default_language_name | sysname | Válido para : SQL Server 2012 (11.x) y versiones posteriores. Idioma predeterminado para esta entidad de seguridad. |
default_language_lcid | int | Válido para : SQL Server 2012 (11.x) y versiones posteriores. LCID predeterminado para esta entidad de seguridad. |
allow_encrypted_value_modifications | bit | Se aplica a: SQL Server 2016 (13.x) y versiones posteriores, SQL Database Suprime las comprobaciones de metadatos criptográficos en el servidor en operaciones de copia masiva. Esto permite al usuario realizar una copia masiva de los datos cifrados mediante Always Encrypted entre tablas o bases de datos sin tener que descifrar los datos. El valor predeterminado es OFF. |
Observaciones
Las propiedades PasswordLastSetTime están disponibles en todas las configuraciones admitidas de SQL Server, pero las restantes propiedades solo están disponibles cuando SQL Server se ejecuta en Windows Server 2003, o cualquier versión posterior, y tanto CHECK_POLICY como CHECK_EXPIRATION están habilitadas. Para más información, consulte Directiva de contraseñas. Los valores de principal_id se pueden reutilizar si se han quitado las entidades de seguridad y, por lo tanto, no se pueda garantizar que vayan a crecer constantemente.
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;
Ejemplos: Azure Synapse Analytics y Sistema de la plataforma de análisis (PDW)
C: enumerar todos los permisos de las entidades de seguridad de la 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 los 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 combina sys.database_principals
y sys.database_permissions
con sys.objects
y sys.schemas
para enumerar los permisos otorgados o denegados a objetos de esquema concretos.
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;
Consulte también
Entidades de seguridad (motor de base de datos)
sys.server_principals (Transact-SQL)
Vistas de catálogo de seguridad (Transact-SQL)
Usuarios de base de datos independientes: hacer que la base de datos sea portátil
Conexión a Azure SQL con la autenticación de Microsoft Entra