sys.database_permissions (Transact-SQL)

Aplica-se a:SQL ServerBase de Dados SQL do AzureInstância Gerida do Azure SQLAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Ponto de Extremidade de Análise SQL no Microsoft FabricArmazém no Microsoft FabricBase de Dados SQL no Microsoft Fabric

Retorna uma linha para cada permissão ou permissão de exceção de coluna no banco de dados. Para colunas, há uma linha para cada permissão que é diferente da permissão de nível de objeto correspondente. Se a permissão de coluna for igual à permissão de objeto correspondente, não haverá linha para ela e a permissão aplicada será a do objeto.

Important

As permissões no nível da coluna substituem as permissões no nível do objeto na mesma entidade.

Nome da coluna Tipo de dados Description
class tinyint Identifica a classe na qual existe permissão. Para obter mais informações, consulte sys.securable_classes (Transact-SQL).

0 = Base de dados
1 = Objeto ou Coluna
3 = Esquema
4 = Principal da Base de Dados
5 = Assembly - Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores.
6 = Tipo
10 = Coleção de esquema XML -
Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores.
15 = Tipo de mensagem - Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores.
16 = Contrato de Serviço - Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores.
17 = Serviço - Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores.
18 = Vinculação de serviço remoto - Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores.
19 = Route - Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores.
23 =Full-Text Catalog - Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores.
24 = Chave simétrica - Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores.
25 = Certificado - Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores.
26 = Chave assimétrica - Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores.
29 = Fulltext Stoplist - Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores.
31 = Lista de propriedades de pesquisa - Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores.
32 = Credencial com escopo de banco de dados - Aplica-se a: SQL Server 2016 (13.x) e versões posteriores.
34 = Idioma Externo - Aplica-se a: SQL Server 2019 (15.x) e versões posteriores.
class_desc nvarchar(60) Descrição da classe na qual existe permissão.

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

FULLTEXT STOPLIST

SEARCH PROPERTY LIST

DATABASE SCOPED CREDENTIAL

EXTERNAL LANGUAGE
major_id int ID da coisa sobre a qual existe permissão, interpretada de acordo com a classe. Normalmente, o major_id simplesmente o tipo de ID que se aplica ao que a classe representa.

0 = A própria base de dados

>0 = Object-IDs para objetos de usuário

<0 = Object-IDs para objetos do sistema
minor_id int Secondary-ID de coisa sobre a qual existe permissão, interpretada de acordo com a classe. Muitas vezes, o minor_id é zero, porque não há nenhuma subcategoria disponível para a classe de objeto. Caso contrário, é o Column-ID de uma tabela.
grantee_principal_id int ID da entidade de banco de dados à qual as permissões são concedidas.
grantor_principal_id int ID principal do banco de dados do concedente dessas permissões.
type char(4) Tipo de permissão de banco de dados. Para obter uma lista de tipos de permissão, consulte a tabela a seguir.
permission_name nvarchar(128) Nome de permissão.
state char(1) Estado de permissão:

D = Negar

R = Revogar

G = Subvenção

W = Subvenção com opção de subvenção
state_desc nvarchar(60) Descrição do estado de permissão:

DENY

REVOKE

GRANT

GRANT_WITH_GRANT_OPTION

Permissões de banco de dados

Os seguintes tipos de permissões são possíveis.

Tipo de permissão Nome da permissão Aplica-se a valores protegíveis
AADS ALTERAR QUALQUER DATABASEEVENT SESSION DATABASE
AAMK ALTERE QUALQUER MÁSCARA DATABASE
AEDS ALTER QUALQUER EXTERNAL DATA SOURCE DATABASE
AEFF ALTER QUALQUER EXTERNAL FILE FORMAT DATABASE
AL ALTER APPLICATION ROLE, ASSEMBLY, CERTIFICATEASYMMETRIC KEY, CONTRACT, , DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, OBJECTO, , SCHEMAUSERROLEROUTESERVICESYMMETRIC KEYREMOTE SERVICE BINDINGXML SCHEMA COLLECTION
ALAK ALTER QUALQUER ASYMMETRIC KEY DATABASE
ALAR ALTER QUALQUER APPLICATION ROLE DATABASE
ALAS ALTER QUALQUER ASSEMBLY DATABASE
ALCF ALTER QUALQUER CERTIFICATE DATABASE
ALDS ALTERAR QUALQUER ESPAÇO DE DADOS DATABASE
ALED ALTERAR QUALQUER DATABASEEVENT NOTIFICATION DATABASE
ALFT ALTER QUALQUER FULLTEXT CATALOG DATABASE
ALMT ALTER QUALQUER MESSAGE TYPE DATABASE
ALRL ALTER QUALQUER ROLE DATABASE
ALRT ALTER QUALQUER ROUTE DATABASE
ALSB ALTER QUALQUER REMOTE SERVICE BINDING DATABASE
ALSC ALTER QUALQUER CONTRACT DATABASE
ALSK ALTER QUALQUER SYMMETRIC KEY DATABASE
ALSM ALTER QUALQUER SCHEMA DATABASE
ALSV ALTER QUALQUER SERVICE DATABASE
ALTG ALTERAR QUALQUER DATABASE DDL TRIGGER DATABASE
ALUS ALTER QUALQUER USER DATABASE
AUTH AUTHENTICATE DATABASE
BADB BACKUP DATABASE DATABASE
BALO BACKUP LOG DATABASE
CL CONTROL APPLICATION ROLE, ASSEMBLY, ASYMMETRIC KEY, , CONTRACT, DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, , OBJECTO, REMOTE SERVICE BINDING, ROLE, ROUTEUSERSCHEMASERVICESYMMETRIC KEYTYPECERTIFICATEXML SCHEMA COLLECTION
CO CONNECT DATABASE
CORP REPLICAÇÃO CONNECT 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 Aplica-se a: SQL Server 2012 (11.x) e versões posteriores.

CREATE SEQUENCE
DATABASE
CRSV CREATE SERVICE DATABASE
CRTB CREATE TABLE DATABASE
CRTY CREATE TYPE DATABASE
CRVW CREATE VIEW DATABASE
CRXS Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores.

CREATE XML SCHEMA COLLECTION
DATABASE
DABO ADMINISTRAÇÃO DATABASE DE OPERAÇÕES A GRANEL DATABASE
DL DELETE DATABASE, OBJECTO, SCHEMA
EAES EXECUTE QUALQUER SCRIPT EXTERNO DATABASE
EX EXECUTE ASSEMBLY, DATABASE, OBJECTO, SCHEMA, TYPE, XML SCHEMA COLLECTION
IM IMPERSONATE USER
IN INSERT DATABASE, OBJECTO, SCHEMA
RC RECEIVE OBJECT
RF REFERENCES ASSEMBLY, ASYMMETRIC KEY, CERTIFICATECONTRACT, , DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, OBJECTO, SCHEMA, SYMMETRIC KEY, TYPE,XML SCHEMA COLLECTION
SL SELECT DATABASE, OBJECTO, SCHEMA
SN SEND SERVICE
SPLN SHOWPLAN DATABASE
SUQN SUBSCREVER NOTIFICAÇÕES DE CONSULTA DATABASE
TO ASSUMIR A RESPONSABILIDADE ASSEMBLY, , , , , , , OBJECTO, REMOTE SERVICE BINDING, SYMMETRIC KEYTYPEROLESCHEMASERVICEROUTEMESSAGE TYPEFULLTEXT CATALOGDATABASECONTRACTCERTIFICATEASYMMETRIC KEYXML SCHEMA COLLECTION
UP UPDATE DATABASE, OBJECTO, SCHEMA
VW VIEW DEFINIÇÃO APPLICATION ROLE, ASSEMBLY, ASYMMETRIC KEY, , CONTRACT, DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, , OBJECTO, REMOTE SERVICE BINDING, ROLE, ROUTEUSERSCHEMASERVICESYMMETRIC KEYTYPECERTIFICATEXML SCHEMA COLLECTION
VWCK VIEW QUALQUER COLUMN ENCRYPTION KEY DEFINIÇÃO DATABASE
VWCM VIEW QUALQUER COLUMN MASTER KEY DEFINIÇÃO DATABASE
VWCT VIEW MONITORIZAÇÃO DE ALTERAÇÕES TABLE, SCHEMA
VWDS VIEW DATABASE ESTADO DATABASE

REVOKE e permissões de exceção de coluna

Na maioria dos casos, o REVOKE comando remove a GRANT entrada ou DENY de sys.database_permissions.

No entanto, é possível GRANT ou DENY permissões sobre um objeto e depois REVOKE essa permissão sobre uma coluna. Esta permissão de exceção de coluna aparecerá como REVOKE em sys.database_permissions. Considere o seguinte exemplo:

GRANT SELECT ON Person.Person TO [Sales];

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

Estas permissões aparecerão em sys.database_permissions como uma GRANT (na tabela) e uma REVOKE (na coluna).

Important

REVOKE é diferente de DENY, pois o Sales principal pode ainda ter acesso à coluna através de outras permissões. Se tivéssemos negado permissões em vez de as revogar, Sales não conseguiríamos ver o conteúdo da coluna porque DENY sempre se GRANTsobrepõe a .

Permissions

Qualquer usuário pode ver suas próprias permissões. Para ver permissões para outros utilizadores, é necessário VIEW DEFINIÇÃO, ALTERAR QUALQUER USER, ou qualquer permissão sobre um utilizador. Para ver os papéis definidos pelo utilizador, é necessário ALTERAR QUALQUER ROLE, ou a pertença ao papel (como público).

A visibilidade dos metadados em exibições de catálogo é limitada aos protegíveis que um usuário possui ou nos quais o usuário recebeu alguma permissão. Para obter mais informações, consulte Configuração de visibilidade de metadados.

Examples

A. Listar todas as permissões das entidades de banco de dados

A consulta a seguir lista as permissões explicitamente concedidas ou negadas às entidades de banco de dados.

Important

As permissões de funções de banco de dados fixas não aparecem no sys.database_permissions. Portanto, as entidades de banco de dados podem ter permissões adicionais não listadas aqui.

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. Listar permissões em objetos de esquema em um banco de dados

A consulta a seguir une sys.database_principals e sys.database_permissions para sys.objects e sys.schemas para listar permissões concedidas ou negadas 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
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 pe.class = 1;

C. Listar permissões para um objeto específico

Você pode usar o exemplo anterior para consultar permissões específicas para um único objeto de banco de dados.

Por exemplo, considere as seguintes permissões granulares concedidas a um usuário de banco de dados test no banco de dados de exemplo AdventureWorksDW2025:

GRANT SELECT ON dbo.vAssocSeqOrders TO [test];

Encontre as permissões granulares atribuídas 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 pe.class = 1
    AND o.name = 'vAssocSeqOrders'
    AND s.name = 'dbo';

Devolve a saída:

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

Consulte também

Próximos passos