sys.database_permissions (Transact-SQL)

Se aplica a: SQL Server (todas las versiones compatibles) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Devuelve una fila por cada permiso o permiso de excepción de columnas en la base de datos. En las columnas, hay una fila por cada permiso que sea diferente del permiso de objeto correspondiente. Si el permiso de columna es el mismo que el permiso de objeto correspondiente, no hay ninguna fila para él y el permiso aplicado es el del objeto.

Importante

Los permisos de columna reemplazan los permisos de objeto en la misma entidad.

Nombre de la columna Tipo de datos Descripción
class tinyint Identifica la clase en que existe el permiso. Para obtener más información, consulte sys.securable_classes (Transact-SQL).

0 = Base de datos
1 = Objeto o columna
3 = Esquema
4 = Entidad de seguridad de base de datos
5 = Ensamblado: se aplica a: SQL Server 2008 y versiones posteriores.
6 = Tipo
10 = Colección de esquemas XML:
Válido para : SQL Server 2008 y versiones posteriores.
15 = Tipo de mensaje: se aplica a: SQL Server 2008 y versiones posteriores.
16 = Contrato de servicio: se aplica a: SQL Server 2008 y versiones posteriores.
17 = Servicio: se aplica a: SQL Server 2008 y versiones posteriores.
18 = Enlace de servicio remoto: se aplica a: SQL Server 2008 y versiones posteriores.
19 = Ruta: se aplica a: SQL Server 2008 y versiones posteriores.
23 =Catálogo de texto completo: se aplica a: SQL Server 2008 y versiones posteriores.
24 = Clave simétrica: se aplica a: SQL Server 2008 y versiones posteriores.
25 = Certificado: se aplica a: SQL Server 2008 y versiones posteriores.
26 = Clave asimétrica: se aplica a: SQL Server 2008 y versiones posteriores.
29 = Lista de palabras irrelevantes de texto completo: se aplica a: SQL Server 2008 y versiones posteriores.
31 = Lista de propiedades de búsqueda: se aplica a: SQL Server 2008 y versiones posteriores.
32 = Credencial con ámbito de base de datos: se aplica a: SQL Server 2008 y versiones posteriores.
34 = Idioma externo: se aplica a: SQL Server 2008 y versiones posteriores.
class_desc nvarchar(60) Descripción de la clase en la que existe el permiso.

DATABASE

OBJECT_OR_COLUMN

SCHEMA

DATABASE_PRINCIPAL

ASSEMBLY

TYPE

XML_SCHEMA_COLLECTION

MESSAGE_TYPE

SERVICE_CONTRACT

SERVICE

REMOTE_SERVICE_BINDING

ROUTE

FULLTEXT_CATALOG

SYMMETRIC_KEYS

CERTIFICADO

ASYMMETRIC_KEY

FULLTEXT STOPLIST

SEARCH PROPERTY LIST

DATABASE SCOPED CREDENTIAL

EXTERNAL LANGUAGE
major_id int Id. del elemento en que existe el permiso, interpretado según la clase. Normalmente, el major_id es simplemente el tipo de identificador que se aplica a lo que representa la clase.

0 = La propia base de datos

>0 = Object-IDs para objetos de usuario

<0 = Object-IDs para objetos del sistema
minor_id int Id. secundario del elemento en que existe el permiso, interpretado según la clase. A menudo, el minor_id es cero, porque no hay ninguna subcategoría disponible para la clase de objeto . De lo contrario, es el identificador de columna de una tabla.
grantee_principal_id int Id. de la entidad de seguridad de base de datos a la que se conceden los permisos.
grantor_principal_id int Id. de la entidad de seguridad de base de datos de la persona que concede estos permisos.
type char(4) Tipo de permiso de base de datos. Para obtener una lista de los tipos de permisos, vea la tabla siguiente.
permission_name nvarchar(128) Nombre del permiso.
state char(1) Estado del permiso:

D = Denegar

R = Revocar

G = Conceder

W = Conceder con opción de conceder
state_desc nvarchar(60) Descripción del estado del permiso:

DENEGAR

REVOKE

GRANT

GRANT_WITH_GRANT_OPTION

Permisos para la base de datos

Los siguientes tipos de permisos son posibles.

Tipo de permiso Nombre de permiso Se aplica a un elemento protegible
AADS ALTER ANY DATABASE EVENT SESSION DATABASE
AAMK ALTER ANY MASK DATABASE
AEDS ALTER ANY EXTERNAL DATA SOURCE DATABASE
AEFF ALTER ANY EXTERNAL FILE FORMAT DATABASE
AL ALTER APPLICATION ROLE, ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, OBJECT, REMOTE SERVICE BINDING, ROLE, ROUTE, SCHEMA, SERVICE, SYMMETRIC KEY, USER, XML SCHEMA COLLECTION
ALAK ALTER ANY ASYMMETRIC KEY DATABASE
ALAR ALTER ANY APPLICATION ROLE DATABASE
ALAS ALTER ANY ASSEMBLY DATABASE
ALCF ALTER ANY CERTIFICATE DATABASE
ALDS ALTER ANY DATASPACE DATABASE
ALED ALTER ANY DATABASE EVENT NOTIFICATION DATABASE
ALFT ALTER ANY FULLTEXT CATALOG DATABASE
ALMT ALTER ANY MESSAGE TYPE DATABASE
ALRL ALTER ANY ROLE DATABASE
ALRT ALTER ANY ROUTE DATABASE
ALSB ALTER ANY REMOTE SERVICE BINDING DATABASE
ALSC ALTER ANY CONTRACT DATABASE
ALSK ALTER ANY SYMMETRIC KEY DATABASE
ALSM ALTER ANY SCHEMA DATABASE
ALSV ALTER ANY SERVICE DATABASE
ALTG ALTER ANY DATABASE DDL TRIGGER DATABASE
ALUS ALTER ANY USER DATABASE
AUTH AUTHENTICATE DATABASE
BADB BACKUP DATABASE DATABASE
BALO BACKUP LOG DATABASE
CL CONTROL APPLICATION ROLE, ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, OBJECT, REMOTE SERVICE BINDING, ROLE, ROUTE, SCHEMA, SERVICE, SYMMETRIC KEY, TYPE, USER, XML SCHEMA COLLECTION
CO CONNECT DATABASE
CORP CONNECT REPLICATION DATABASE
CP CHECKPOINT DATABASE
CRAG CREATE AGGREGATE DATABASE
CRAK CREATE ASYMMETRIC KEY DATABASE
CRAS CREATE ASSEMBLY DATABASE
CRCF CREATE CERTIFICATE DATABASE
CRDB CREATE DATABASE DATABASE
CRDF CREATE DEFAULT DATABASE
CRED CREATE DATABASE DDL EVENT NOTIFICATION DATABASE
CRFN CREATE FUNCTION DATABASE
CRFT CREATE FULLTEXT CATALOG DATABASE
CRMT CREATE MESSAGE TYPE DATABASE
CRPR CREATE PROCEDURE DATABASE
CRQU CREATE QUEUE DATABASE
CRRL CREATE ROLE DATABASE
CRRT CREATE ROUTE DATABASE
CRRU CREATE RULE DATABASE
CRSB CREATE REMOTE SERVICE BINDING DATABASE
CRSC CREATE CONTRACT DATABASE
CRSK CREATE SYMMETRIC KEY DATABASE
CRSM CREATE SCHEMA DATABASE
CRSN CREATE SYNONYM DATABASE
CRSO Válido para : SQL Server 2012 (11.x) y versiones posteriores.

CREATE SEQUENCE
DATABASE
CRSV CREATE SERVICE DATABASE
CRTB CREATE TABLE DATABASE
CRTY CREATE TYPE DATABASE
CRVW CREATE VIEW DATABASE
CRXS Válido para : SQL Server 2008 y versiones posteriores.

CREATE XML SCHEMA COLLECTION
DATABASE
DABO ADMINISTER DATABASE BULK OPERATIONS DATABASE
DL Delete DATABASE, OBJECT, SCHEMA
EAES EXECUTE ANY EXTERNAL SCRIPT DATABASE
EX Ejecute ASSEMBLY, DATABASE, OBJECT, SCHEMA, TYPE, XML SCHEMA COLLECTION
IM IMPERSONATE USER
IN INSERT DATABASE, OBJECT, SCHEMA
RC RECEIVE OBJECT
RF REFERENCES ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, OBJECT, SCHEMA, SYMMETRIC KEY, TYPE, XML SCHEMA COLLECTION
SL SELECT DATABASE, OBJECT, SCHEMA
SN ENVIAR SERVICE
SPLN SHOWPLAN DATABASE
SUQN SUBSCRIBE QUERY NOTIFICATIONS DATABASE
TO TAKE OWNERSHIP ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, OBJECT, REMOTE SERVICE BINDING, ROLE, ROUTE, SCHEMA, SERVICE, SYMMETRIC KEY, TYPE, XML SCHEMA COLLECTION
UP UPDATE DATABASE, OBJECT, SCHEMA
VW VIEW DEFINITION APPLICATION ROLE, ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, OBJECT, REMOTE SERVICE BINDING, ROLE, ROUTE, SCHEMA, SERVICE, SYMMETRIC KEY, TYPE, USER, XML SCHEMA COLLECTION
VWCK VIEW ANY COLUMN ENCRYPTION KEY DEFINITION DATABASE
VWCM VIEW ANY COLUMN MASTER KEY DEFINITION DATABASE
VWCT VIEW CHANGE TRACKING SCHEMA TABLE
VWDS VIEW DATABASE STATE DATABASE

Permisos

Cualquier usuario puede ver sus propios permisos. Para ver los permisos de otros usuarios, se requiere VIEW DEFINITION, ALTER ANY USER o cualquier permiso en un usuario. Para ver los roles definidos por el usuario, se requiere ALTER ANY ROLE o la pertenencia al rol (por ejemplo, public).

La visibilidad de los metadatos en las vistas de catálogo se limita a los elementos protegibles y que son propiedad de un usuario o sobre los que el usuario tiene algún permiso. Para obtener más información, consulte Metadata Visibility Configuration.

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;  

Consulte también

Elementos protegibles
Jerarquía de permisos (motor de base de datos)
Vistas de catálogo de seguridad (Transact-SQL)
Vistas de catálogo (Transact-SQL)