Compartilhar via


sys.database_permissions (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics PDW (Analytics Platform System) Ponto de extremidade de análise de SQL no Microsoft Fabric Warehouse 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 no nível de objeto correspondente. Se a permissão da coluna for igual à permissão do objeto correspondente, não há linha para ela e a permissão aplicada será a do objeto.

Importante

As permissões em nível de coluna substituem as permissões em nível de objeto na mesma entidade.

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

0 = Banco de dados
1 = Objeto ou coluna
3 = Esquema
4 = Entidade do Banco de Dados
5 = Assembly - Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores.
6 = Tipo
10 = Coleção de esquemas 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 = Associação de Serviço Remoto - Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores.
19 = Rota - Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores.
23 =Catálogo de Texto Completo - 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 = Lista de palavras irrelevantes de texto completo - 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 no Escopo do 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 de classe na qual a permissão existe.

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

CREDENCIAL NO ESCOPO DO BANCO DE DADOS

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

0 = O próprio banco de dados

>0 = IDs de objeto para objetos de usuário

<0 = Object-IDs para objetos do sistema
minor_id int ID secundária na qual a permissão existe, interpretada de acordo com a classe. Muitas vezes, o minor_id é zero, porque não há subcategoria disponível para a classe de objeto. Caso contrário, será a ID da coluna de uma tabela.
grantee_principal_id int ID do principal de banco de dados para a qual as permissões são concedidas.
grantor_principal_id int ID do principal de banco de dados do concessor dessas permissões.
tipo char(4) Tipo de permissão de banco de dados. Para obter uma lista de tipos de permissão, consulte a próxima tabela.
permission_name nvarchar(128) Nome de permissão.
state char(1) Estado de permissão:

D = Negar

R = Revogar

G = Conceder

W = Opção Concessão com Concessão
state_desc nvarchar(60) Descrição do estado da permissão:

NEGAR

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 de permissão Aplica-se a protegíveis
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 CONECTAR 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 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 ADMINISTRAR OPERAÇÕES EM LOTE DO BANCO DE DADOS DATABASE
DL DELETE DATABASE, OBJECT, SCHEMA
EAES EXECUTE ANY EXTERNAL SCRIPT DATABASE
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 SEND 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 TABLE, SCHEMA
VWDS VIEW DATABASE STATE DATABASE

Permissões

Qualquer usuário pode ver suas próprias permissões. Para ver as permissões de outros usuários, requer VIEW DEFINITION, ALTER ANY USER ou qualquer permissão em um usuário. Ver funções definidas pelo usuário requer ALTER ANY ROLE ou associação na função (como público).

A visibilidade dos metadados em exibições do catálogo está limitada aos protegíveis que pertencem a um usuário ou para os quais o usuário recebeu permissão. Para obter mais informações, consulte Metadata Visibility Configuration.

Exemplos

R. Listar todas as permissões de entidades de banco de dados

A consulta a seguir lista as permissões concedidas ou negadas explicitamente a entidades de segurança do banco de dados.

Importante

As permissões de funções de banco de dados fixas não aparecem em sys.database_permissions. Portanto, entidades de segurança do 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 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;

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 test de banco de dados no banco de dados AdventureWorksDW2022de exemplo:

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 o.name = 'vAssocSeqOrders'
    AND s.name = 'dbo';

Retorna 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

Confira também

Próximas etapas