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.
|
||||||||||||||||||||||||||||||||
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
|
DATABASE |
|
CRSV |
CREATE SERVICE |
DATABASE |
|
CRTB |
CREATE TABLE |
DATABASE |
|
CRTY |
CREATE TYPE |
DATABASE |
|
CRVW |
CREATE VIEW |
DATABASE |
|
CRXS |
CREATE XML SCHEMA COLLECTION
|
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)