Compartir por


sys.database_permissions (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseInstancia administrada de Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Punto de conexión de SQL Analytics en Microsoft FabricAlmacén en Microsoft FabricBase de datos SQL en Microsoft Fabric

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 fila para este permiso y se aplicará el permiso del objeto.

Important

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

Nombre de la columna Tipo de dato Description
class tinyint Identifica la clase en que existe el permiso. Para 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 la base de datos
5 = Ensamblado : se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.
6 = Tipo
10 = Colección de esquemas XML:
Se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.
15 = Tipo de mensaje: se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.
16 = Contrato de servicio: se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.
17 = Servicio : se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.
18 = Enlace de servicio remoto: se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.
19 = Ruta : se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.
23 =Catálogo de texto completo: se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.
24 = Clave simétrica: se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.
25 = Certificado : se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.
26 = Clave asimétrica: se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.
29 = Lista de palabras irrelevantes de texto completo: se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.
31 = Lista de propiedades de búsqueda: se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.
32 = Credencial con ámbito de base de datos: se aplica a: SQL Server 2016 (13.x) y versiones posteriores.
34 = Lenguaje externo: se aplica a: SQL Server 2019 (15.x) 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

CERTIFICATE

ASYMMETRIC_KEY

LISTA DE PALABRAS IRRELEVANTES DE TEXTO COMPLETO

BUSCAR LISTA DE PROPIEDADES

CREDENCIAL CON ÁMBITO DE BASE DE DATOS

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

0 = La propia base de datos

>0 = Identificadores de objeto para objetos de usuario

<0 = identificadores de los objetos de sistema
minor_id int Id. secundario del elemento en que existe el permiso, interpretado según la clase. A menudo, el minor_id valor 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 de permiso.
state char(1) Estado de 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

Permisos de base de datos

Los siguientes tipos de permisos son posibles.

Tipo de permiso Nombre del permiso Se aplica a un elemento protegible
AADS ALTERAR CUALQUIER SESIÓN DE EVENTO DE BASE DE DATOS DATABASE
AAMK ALTERAR CUALQUIER MÁSCARA DATABASE
AEDS MODIFICAR CUALQUIER FUENTE DE DATOS EXTERNA DATABASE
AEFF ALTERAR CUALQUIER FORMATO DE ARCHIVO EXTERNO DATABASE
AL ALTER ROL DE APLICACIÓN, 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 ALTERAR CUALQUIER CLAVE ASIMÉTRICA DATABASE
ALAR ALTERAR CUALQUIER ROL DE APLICACIÓN DATABASE
ALAS MODIFICAR CUALQUIER ENSAMBLAJE DATABASE
ALCF ALTERAR CUALQUIER CERTIFICADO DATABASE
ALDS ALTERAR CUALQUIER ESPACIO DE DATOS DATABASE
ALED ALTERAR CUALQUIER NOTIFICACIÓN DE EVENTO DE BASE DE DATOS DATABASE
ALFT MODIFICAR CUALQUIER CATÁLOGO DE TEXTO COMPLETO DATABASE
ALMT ALTERAR CUALQUIER TIPO DE MENSAJE DATABASE
ALRL ALTERAR CUALQUIER ROL DATABASE
ALRT ALTERAR CUALQUIER RUTA DATABASE
ALSB ALTERAR CUALQUIER VINCULACIÓN DE SERVICIO REMOTO DATABASE
ALSC ALTERAR CUALQUIER CONTRATO DATABASE
ALSK ALTERAR CUALQUIER CLAVE SIMÉTRICA DATABASE
ALSM ALTER CUALQUIER ESQUEMA DATABASE
ALSV Modificar cualquier servicio DATABASE
ALTG ALTERAR CUALQUIER DISPARADOR DDL DE BASE DE DATOS DATABASE
ALUS ALTERAR CUALQUIER USUARIO DATABASE
AUTH AUTHENTICATE DATABASE
BADB RESPALDAR BASE DE DATOS DATABASE
BALO REGISTRO DE COPIA DE SEGURIDAD DATABASE
CL CONTROL ROL DE APLICACIÓN, 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 REPLICACIÓN DE CONNECT DATABASE
CP CHECKPOINT DATABASE
CRAG CREAR AGREGADO (CREATE AGGREGATE) DATABASE
CRAK CREAR CLAVE ASIMÉTRICA DATABASE
CRAS CREAR ENSAMBLADOR DATABASE
CRCF CREAR CERTIFICADO DATABASE
CRDB CREAR BASE DE DATOS DATABASE
CRDF CREAR DEFAULT DATABASE
CRED CREAR BASE DE DATOS NOTIFICACIÓN DE EVENTO DDL DATABASE
CRFN CREATE FUNCTION DATABASE
CRFT CREAR CATÁLOGO DE TEXTO COMPLETO DATABASE
CRMT CREAR TIPO DE MENSAJE DATABASE
CRPR CREAR PROCEDIMIENTO DATABASE
CRQU CREATE QUEUE DATABASE
CRRL CREAR ROL DATABASE
CRRT CREAR RUTA DATABASE
CRRU CREAR REGLA DATABASE
CRSB CREACIÓN DE UN ENLACE DE SERVICIO REMOTO DATABASE
CRSC CREAR CONTRATO DATABASE
CRSK CREACIÓN DE UNA CLAVE SIMÉTRICA DATABASE
CRSM CREAR ESQUEMA DATABASE
CRSN CREAR SINÓMINO DATABASE
CRSO Se aplica a: SQL Server 2012 (11.x) y versiones posteriores.

CREAR SECUENCIA
DATABASE
CRSV CREAR SERVICIO DATABASE
CRTB CREATE TABLE DATABASE
CRTY CREAR TIPO DATABASE
CRVW CREAR VISTA DATABASE
CRXS Se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.

CREAR COLECCIÓN DE ESQUEMA XML
DATABASE
DABO ADMINISTRACIÓN DE OPERACIONES MASIVAS DE BASE DE DATOS DATABASE
DL DELETE BASE DE DATOS, OBJETO, ESQUEMA
EAES EJECUTAR CUALQUIER SCRIPT EXTERNO DATABASE
EX EXECUTE ENSAMBLADOR, BASE DE DATOS, OBJETO, ESQUEMA, TIPO, COLECCIÓN DE ESQUEMAS XML
IM IMPERSONATE USER
IN INSERT BASE DE DATOS, OBJETO, ESQUEMA
RC RECEIVE OBJECT
RF REFERENCES ENSAMBLADOR, CLAVE ASIMÉTRICA, CERTIFICADO, CONTRATO, BASE DE DATOS, CATÁLOGO DE TEXTO COMPLETO, TIPO DE MENSAJE, OBJETO, ESQUEMA, CLAVE SIMÉTRICA, TIPO, COLECCIÓN DE ESQUEMAS XML
SL SELECT BASE DE DATOS, OBJETO, ESQUEMA
SN SEND SERVICE
SPLN SHOWPLAN DATABASE
SUQN SUSCRÍBETE A LAS NOTIFICACIONES DE CONSULTA DATABASE
TO TOMAR POSESIÓN ENSAMBLADOR, CLAVE ASIMÉTRICA, CERTIFICADO, CONTRATO, BASE DE DATOS, CATÁLOGO DE TEXTO COMPLETO, TIPO DE MENSAJE, OBJETO, VINCULACIÓN REMOTA DE SERVICIO, ROL, RUTA, ESQUEMA, SERVICIO, CLAVE SIMÉTRICA, TIPO, COLECCIÓN DE ESQUEMAS XML
UP UPDATE BASE DE DATOS, OBJETO, ESQUEMA
VW VER DEFINICIÓN ROL DE APLICACIÓN, 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 VER LA DEFINICIÓN DE CUALQUIER CLAVE DE CIFRADO PARA COLUMNAS DATABASE
VWCM VER LA DEFINICIÓN DE CUALQUIER CLAVE MAESTRA DE COLUMNA DATABASE
VWCT VISUALIZACIÓN DEL SEGUIMIENTO DE CAMBIOS TABLA, ESQUEMA
VWDS VER EL ESTADO DE LA BASE DE DATOS DATABASE

PERMISOS REVOKE y de excepción de columna

En la mayoría de los casos, el comando REVOKE quitará la entrada GRANT o DENY de sys.database_permissions.

Sin embargo, es posible conceder o denegar permisos en un objeto y, a continuación, REVOCAR ese permiso en una columna. Este permiso de excepción de columna se mostrará como REVOKE en sys.database_permissions. Tenga en cuenta el ejemplo siguiente:

GRANT SELECT ON Person.Person TO [Sales];

REVOKE SELECT ON Person.Person(AdditionalContactInfo) FROM [Sales];

Estos permisos se mostrarán en sys.database_permissions como un GRANT (en la tabla) y un REVOKE (en la columna).

Important

REVOKE es diferente de DENY, ya que la entidad de seguridad de Sales puede tener acceso a la columna a través de otros permisos. Si se hubiera denegado permisos en lugar de revocarlos, Sales no podría ver el contenido de la columna porque DENY siempre sustituye a GRANT.

Permissions

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 ha recibido algún permiso. Para obtener más información, consulte Metadata Visibility Configuration.

Examples

A. Enumerar todos los permisos de las 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.

Important

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  
INNER JOIN sys.database_permissions AS pe ON pe.grantee_principal_id = pr.principal_id;  

B. Enumeración de permisos en objetos de esquema dentro de una base de datos

La consulta siguiente combina sys.database_principals y a sys.objects y sys.schemas para enumerar los permisos concedidossys.database_permissions

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
INNER JOIN sys.database_permissions AS pe ON pe.grantee_principal_id = pr.principal_id
INNER JOIN sys.objects AS o ON pe.major_id = o.object_id
INNER JOIN sys.schemas AS s ON o.schema_id = s.schema_id;

C. Enumeración de permisos para un objeto específico

Puede usar el ejemplo anterior para consultar permisos específicos de un único objeto de base de datos.

Por ejemplo, considere los siguientes permisos pormenorizados concedidos a un usuario test de base de datos de la base de datos deAdventureWorksDW2025ejemplo :

GRANT SELECT ON dbo.vAssocSeqOrders TO [test];

Busque los permisos granulares asignados a dbo.vAssocSeqOrders:

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
INNER JOIN sys.database_permissions AS pe ON pe.grantee_principal_id = pr.principal_id
INNER JOIN sys.objects AS o ON pe.major_id = o.object_id
INNER JOIN sys.schemas AS s ON o.schema_id = s.schema_id
WHERE o.name = 'vAssocSeqOrders'
    AND s.name = 'dbo';

Devuelve la salida:

principal_id    name    type_desc    authentication_type_desc    state_desc    permission_name    ObjectName
5    test    SQL_USER    INSTANCE    GRANT    SELECT    dbo.vAssocSeqOrders

Consulte también

Pasos siguientes