sys.database_permissions (Transact-SQL)
Se aplica a: punto de conexión de SQL Server Azure SQL Database Azure SQL Instancia administrada punto de conexión de SQL Analytics Analytics Platform System (PDW) de SQL Analytics System (PDW) de SQL Server en Microsoft Fabric Warehouse 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.
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 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 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 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 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 | Se aplica a: 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 | Se aplica a: SQL Server 2008 (10.0.x) 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 ha recibido algún permiso. Para obtener más información, consulte Metadata Visibility Configuration.
Ejemplos
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.
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
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 concedidos o denegados a objetos de esquema específicos.sys.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 de AdventureWorksDW2022
ejemplo :
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
- 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)