Compartir a través de


sys.database_permissions (Transact-SQL)

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 habrá fila para este permiso y se utilizará el permiso de objeto.

Importante

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

Se aplica a: SQL Server (desde SQL Server 2008 hasta la versión actual), Windows Azure SQL Database (desde la versión inicial hasta la versión actual).

Nombre de columna

Tipo de datos

Descripción

clase

tinyint

Identifica la clase en que existe el permiso.

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 a SQL Server 2014.

6 = Tipo

10 = Colección de esquemas XML

Se aplica a: SQL Server 2008 a SQL Server 2014.

15 = Tipo de mensaje

Se aplica a: SQL Server 2008 a SQL Server 2014.

16 = Contrato de servicio

Se aplica a: SQL Server 2008 a SQL Server 2014.

17 = Servicio

Se aplica a: SQL Server 2008 a SQL Server 2014.

18 = Enlace de servicio remoto

Se aplica a: SQL Server 2008 a SQL Server 2014.

19 = Ruta

Se aplica a: SQL Server 2008 a SQL Server 2014.

23 = Catálogo de texto completo

Se aplica a: SQL Server 2008 a SQL Server 2014.

24 = Clave simétrica

Se aplica a: SQL Server 2008 a SQL Server 2014.

25 = Certificado

Se aplica a: SQL Server 2008 a SQL Server 2014.

26 = Clave asimétrica

Se aplica a: SQL Server 2008 a SQL Server 2014.

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_KEY

CERTIFICATE

ASYMMETRIC_KEY

major_id

int

Id. del elemento en que existe el permiso, interpretado según la clase. En la mayoría de los casos, es simplemente el tipo de Id. que se aplica a lo representado por la clase. La interpretación de los casos no estándar es la siguiente:

0 = siempre 0

1 = identificador de objeto

Los identificadores negativos se asignan a objetos del sistema.

minor_id

int

Id. secundario del elemento en que existe el permiso, interpretado según la clase. En la mayoría de los casos, es cero. Si no, es lo siguiente:

1 = Id. de columna, si es una columna. De lo contrario, es 0 si es un objeto.

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.

tipo

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:

DENY

REVOKE

GRANT

GRANT_WITH_GRANT_OPTION

Tipo de permiso

Nombre de permiso

Se aplica a un elemento protegible

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

CREATE SEQUENCE

Se aplica a: SQL Server 2012 a SQL Server 2014.

DATABASE

CRSV

CREATE SERVICE

DATABASE

CRTB

CREATE TABLE

DATABASE

CRTY

CREATE TYPE

DATABASE

CRVW

CREATE VIEW

DATABASE

CRXS

CREATE XML SCHEMA COLLECTION

Se aplica a: SQL Server 2008 a SQL Server 2014.

DATABASE

DL

DELETE

DATABASE, OBJECT, SCHEMA

EX

EXECUTE

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

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, vea Configuración de visibilidad de los metadatos.

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 de seguridad (Transact-SQL)

Vistas de catálogo (Transact-SQL)

Conceptos

Elementos protegibles

Jerarquía de permisos (motor de base de datos)