Compartilhar via


sys.database_permissions (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsAnalytics Platform System (PDW)Ponto de extremidade de análise de SQL no Microsoft FabricDepósito no Microsoft FabricBanco 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 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.

Important

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 Description
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

Lista de palavras excluídas de pesquisa FULLTEXT

LISTA DE PROPRIEDADES DE PESQUISA

CREDENCIAL NO ESCOPO DO BANCO DE DADOS

IDIOMA EXTERNO
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.
type 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) Declaração 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:

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 protegíveis
AADS ALTERAR QUALQUER SESSÃO DE EVENTO DE BANCO DE DADOS DATABASE
AAMK ALTERAR QUALQUER MÁSCARA DATABASE
AEDS ALTERAR QUALQUER FONTE DE DADOS EXTERNA DATABASE
AEFF ALTERAR QUALQUER FORMATO DE ARQUIVO EXTERNO DATABASE
AL ALTER FUNÇÃO DE APLICATIVO, ASSEMBLY, CHAVE ASSIMÉTRICA, CERTIFICADO, CONTRATO, BANCO DE DADOS, CATÁLOGO FULLTEXT, TIPO DE MENSAGEM, OBJETO, ASSOCIAÇÃO DE SERVIÇO REMOTO, FUNÇÃO, ROTA, ESQUEMA, SERVIÇO, CHAVE SIMÉTRICA, USUÁRIO, COLEÇÃO DE ESQUEMA XML
ALAK ALTER ANY CHAVE ASSIMÉTRICA DATABASE
ALAR ALTERAR QUALQUER FUNÇÃO DE APLICAÇÃO DATABASE
ALAS ALTERAR QUALQUER ASSEMBLAGEM DATABASE
ALCF ALTERAR QUALQUER CERTIFICADO DATABASE
ALDS ALTERAR QUALQUER ESPAÇO DE DADOS DATABASE
ALED ALTERAR QUALQUER NOTIFICAÇÃO DE EVENTO DE BANCO DE DADOS DATABASE
ALFT ALTERAR QUALQUER CATÁLOGO DE TEXTO COMPLETO DATABASE
ALMT ALTERAR QUALQUER TIPO DE MENSAGEM DATABASE
ALRL ALTERAR QUALQUER FUNÇÃO DATABASE
ALRT ALTERAR QUALQUER ROTA DATABASE
ALSB ALTERAR QUALQUER VINCULAÇÃO DE SERVIÇO REMOTO DATABASE
ALSC ALTERAR QUALQUER CONTRATO DATABASE
ALSK ALTERAR QUALQUER CHAVE SIMÉTRICA DATABASE
ALSM ALTER ANY SCHEMA (Modificar qualquer esquema) DATABASE
ALSV ALTERAR QUALQUER SERVIÇO DATABASE
ALTG ALTER TRIGGER DDL EM QUALQUER BANCO DE DADOS DATABASE
ALUS ALTERAR QUALQUER USUÁRIO DATABASE
AUTH AUTHENTICATE DATABASE
BADB FAZER BACKUP DO BANCO DE DADOS DATABASE
BALO BACKUP LOG DATABASE
CL CONTROL FUNÇÃO DE APLICATIVO, ASSEMBLY, CHAVE ASSIMÉTRICA, CERTIFICADO, CONTRATO, BANCO DE DADOS, CATÁLOGO FULLTEXT, TIPO DE MENSAGEM, OBJETO, ASSOCIAÇÃO DE SERVIÇO REMOTO, FUNÇÃO, ROTA, ESQUEMA, SERVIÇO, CHAVE SIMÉTRICA, TIPO, USUÁRIO, COLEÇÃO DE ESQUEMA XML
CO CONNECT DATABASE
CORP REPLICAÇÃO DE CONEXÃO DATABASE
CP CHECKPOINT DATABASE
CRAG CRIAR AGREGAÇÃO DATABASE
CRAK CRIAR CHAVE ASSIMÉTRICA DATABASE
CRAS CRIAR ASSEMBLY DATABASE
CRCF CRIAR CERTIFICADO DATABASE
CRDB CRIAR BANCO DE DADOS DATABASE
CRDF CRIAR PADRÃO DATABASE
CRED CRIAR NOTIFICAÇÃO DE EVENTO DDL DE BANCO DE DADOS DATABASE
CRFN CRIAR FUNÇÃO DATABASE
CRFT CRIAR CATÁLOGO DE TEXTO COMPLETO DATABASE
CRMT CRIAR TIPO DE MENSAGEM DATABASE
CRPR CRIAR PROCEDIMENTO DATABASE
CRQU CRIAR FILA DATABASE
CRRL CRIAR PAPEL DATABASE
CRRT CRIAR ROTA DATABASE
CRRU CRIAR REGRA DATABASE
CRSB CRIAR VINCULAÇÃO DE SERVIÇO REMOTO DATABASE
CRSC CRIAR CONTRATO DATABASE
CRSK CRIAR CHAVE SIMÉTRICA DATABASE
CRSM CRIAR ESQUEMA DATABASE
CRSN CRIAR SINÔNIMO DATABASE
CRSO Aplica-se a: SQL Server 2012 (11.x) e versões posteriores.

CRIAR SEQUÊNCIA
DATABASE
CRSV CRIAR SERVIÇO DATABASE
CRTB CREATE TABLE DATABASE
CRTY CRIAR TIPO DATABASE
CRVW CRIAR VISÃO DATABASE
CRXS Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores.

CRIAR COLEÇÃO DE ESQUEMA XML
DATABASE
DABO ADMINISTRAR OPERAÇÕES EM LOTE DO BANCO DE DADOS DATABASE
DL DELETE BANCO DE DADOS, OBJETO, ESQUEMA
EAES EXECUTAR QUALQUER SCRIPT EXTERNO DATABASE
EX EXECUTE ASSEMBLY, BANCO DE BANCO, OBJETO, ESQUEMA, TIPO, COLEÇÃO DE ESQUEMAS XML
IM IMPERSONATE USER
IN INSERT BANCO DE DADOS, OBJETO, ESQUEMA
RC RECEIVE OBJECT
RF REFERENCES ASSEMBLY, CHAVE ASSIMÉTRICA, CERTIFICADO, CONTRATO, BANCO DE DADOS, CATÁLOGO FULLTEXT, TIPO DE MENSAGEM, OBJETO, ESQUEMA, CHAVE SIMÉTRICA, TIPO, COLEÇÃO DE ESQUEMAS XML
SL SELECT BANCO DE DADOS, OBJETO, ESQUEMA
SN SEND SERVICE
SPLN SHOWPLAN DATABASE
SUQN ASSINAR NOTIFICAÇÕES DE CONSULTA DATABASE
TO ASSUMA A RESPONSABILIDADE ASSEMBLY, CHAVE ASSIMÉTRICA, CERTIFICADO, CONTRATO, BANCO DE DADOS, CATÁLOGO FULLTEXT, TIPO DE MENSAGEM, OBJETO, ASSOCIAÇÃO DE SERVIÇO REMOTO, FUNÇÃO, ROTA, ESQUEMA, SERVIÇO, CHAVE SIMÉTRICA, TIPO, COLEÇÃO DE ESQUEMA XML
UP UPDATE BANCO DE DADOS, OBJETO, ESQUEMA
VW DEFINIÇÃO VISUALIZAR FUNÇÃO DE APLICATIVO, ASSEMBLY, CHAVE ASSIMÉTRICA, CERTIFICADO, CONTRATO, BANCO DE DADOS, CATÁLOGO FULLTEXT, TIPO DE MENSAGEM, OBJETO, ASSOCIAÇÃO DE SERVIÇO REMOTO, FUNÇÃO, ROTA, ESQUEMA, SERVIÇO, CHAVE SIMÉTRICA, TIPO, USUÁRIO, COLEÇÃO DE ESQUEMA XML
VWCK EXIBIR QUALQUER DEFINIÇÃO DE CHAVE DE CRIPTOGRAFIA DE COLUNA DATABASE
VWCM EXIBIR QUALQUER DEFINIÇÃO DE CHAVE MESTRA DE COLUNA DATABASE
VWCT EXIBIR CONTROLE DE ALTERAÇÕES TABELA, ESQUEMA
VWDS EXIBIR ESTADO DO BANCO DE DADOS DATABASE

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

Na maioria dos casos, o comando REVOKE removerá a entrada GRANT ou DENY do sys.database_permissions.

No entanto, é possível conceder permissões GRANT ou DENY em um objeto e, em seguida, REVOGAR essa permissão em uma coluna. Essa permissão de exceção de coluna será exibida como REVOKE no sys.database_permissions. Considere o seguinte exemplo:

GRANT SELECT ON Person.Person TO [Sales];

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

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

Important

REVOKE é diferente de DENY, pois a entidade de Sales ainda pode ter acesso à coluna por meio de outras permissões. Se tivéssemos negado permissões em vez de revogá-las, Sales não seria capaz de exibir o conteúdo da coluna porque DENY sempre substitui GRANT.

Permissions

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.

Examples

A. 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.

Important

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.objectse 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 dadosAdventureWorksDW2025de 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

Consulte também

Próximas etapas