GRANT (Transact-SQL)

Concede permissões em um protegível a uma entidade. O conceito geral é para GRANT <alguma permissão> ON <algum objeto> TO <algum usuário, logon ou grupo>. Para obter a discussão geral de permissões, consulte Permissões (Mecanismo de Banco de Dados).

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

Simplified syntax for GRANT
GRANT { ALL [ PRIVILEGES ] }
      | permission [ ( column [ ,...n ] ) ] [ ,...n ]
      [ ON [ class :: ] securable ] TO principal [ ,...n ] 
      [ WITH GRANT OPTION ] [ AS principal ]

Argumentos

  • ALL
    Esta opção está preterida e é mantida apenas para compatibilidade com versões anteriores. Ela não concede todas as permissões possíveis. A concessão de ALL é equivalente a conceder as seguintes permissões.

    • Se o protegível for um banco de dados, ALL será equivalente a BACKUP DATABASE, BACKUP LOG, CREATE DATABASE, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLE e CREATE VIEW.

    • Se o protegível for uma função escalar, ALL será equivalente a EXECUTE e REFERENCES.

    • Se o protegível for uma função com valor de tabela, ALL será equivalente a DELETE, INSERT, REFERENCES, SELECT e UPDATE.

    • Se o protegível for um procedimento armazenado, ALL será equivalente a EXECUTE.

    • Se o protegível for uma tabela, ALL será equivalente a DELETE, INSERT, REFERENCES, SELECT e UPDATE.

    • Se o protegível for uma exibição, ALL será equivalente a DELETE, INSERT, REFERENCES, SELECT e UPDATE.

  • PRIVILEGES
    Incluído para conformidade com ISO. Não altera o comportamento de ALL.

  • permission
    É o nome de uma permissão. Os mapeamentos válidos de permissões para protegíveis são descritos nos subtópicos listados a seguir.

  • column
    Especifica o nome de uma coluna em uma tabela na qual estão sendo concedidas permissões. Os parênteses "()" são necessários.

  • class
    Especifica a classe do protegível na qual a permissão está sendo concedida. O qualificador de escopo "::" é necessário.

  • securable
    Especifica o protegível no qual a permissão está sendo concedida.

  • TO principal
    É o nome de uma entidade. As entidades para as quais permissões em um protegível podem ser concedidas variam, dependendo do protegível. Consulte os subtópicos listados a seguir para obter combinações válidas.

  • GRANT OPTION
    Indica que o usuário autorizado também poderá conceder a permissão especificada a outras entidades.

  • AS principal
    Especifica um principal do qual o principal que executa esta consulta deriva seu direito de conceder a permissão.

Comentários

A sintaxe completa da instrução GRANT é complexa. O diagrama de sintaxe acima foi simplificado para chamar sua estrutura à atenção. A sintaxe completa para conceder permissões em protegíveis específicos é descrita nos tópicos listados a seguir.

A instrução REVOKE pode ser usada para remover permissões concedidas, e a instrução DENY pode ser usada para evitar que uma entidade ganhe uma permissão específica por meio de um GRANT.

A concessão de uma permissão remove DENY ou REVOKE daquela permissão no protegível especificado. Se a mesma permissão for negada a um escopo mais alto que contém o protegível, o DENY terá precedência. Mas a revogação da permissão concedida em um escopo mais alto não tem precedência.

Permissões em nível de banco de dados são concedidas dentro do escopo do banco de dados especificado. Se um usuário precisar de permissões em objetos em outro banco de dados, crie a conta de usuário no outro banco de dados ou conceda acesso à conta de usuário no outro banco de dados, bem como no banco de dados atual.

Observação sobre cuidadosCuidado

Um DENY em nível de tabela não tem precedência sobre um GRANT em nível de coluna. Essa inconsistência na hierarquia de permissões foi preservada para manter a compatibilidade com versões anteriores. Ela será removida em uma versão futura.

O procedimento armazenado do sistema sp_helprotect relata permissões em um protegível no nível de banco de dados.

WITH GRANT OPTION

GRANT … WITH GRANT OPTION especifica que a entidade de segurança que recebe a permissão obtém a capacidade de conceder a permissão especificada a outras contas de segurança. Quando a entidade que recebe a permissão é uma função ou um grupo do Windows, a cláusula AS deve ser usada quando a permissão de objeto precisa ser concedida a usuários que não são membros do grupo ou função. Como somente um usuário, em vez de um grupo ou uma função, pode executar uma instrução GRANT, um membro específico do grupo ou da função deve usar a cláusula AS para invocar explicitamente a associação da função ou do grupo ao conceder a permissão. O exemplo a seguir mostra como a WITH GRANT OPTION é usada quando concedida a uma função ou um grupo do Windows.

-- Execute the following as a database owner
GRANT EXECUTE ON TestProc TO TesterRole WITH GRANT OPTION
EXEC sp_addrolemember TesterRole, User1;
-- Execute the following as User1
-- The following fails because User1 does not have the permission as the User1
GRANT EXECUTE ON TestMe TO User2;
-- The following succeeds because User1 invokes the TesterRole membership
GRANT EXECUTE ON TestMe TO User2 AS TesterRole;

Gráfico de permissões do SQL Server

Para obter um cartaz gráfico dimensionado de todas as permissões do Mecanismo de Banco de Dados em formato pdf, consulte https://go.microsoft.com/fwlink/?LinkId=229142.

Permissões

O concessor (ou a entidade de segurança especificada com a opção AS) deve ter a própria permissão com GRANT OPTION ou uma permissão superior que tenha implicitamente a permissão que está sendo concedida. Se a opção AS for usada, requisitos adicionais se aplicarão. Consulte o tópico específico sobre protegíveis para obter detalhes.

Os proprietários de objetos podem conceder permissões nos objetos de sua propriedade. Principais com a permissão CONTROL em um item protegível podem conceder permissão nesse item.

Os usuários autorizados da permissão CONTROL SERVER, como os membros da função de servidor fixa sysadmin, podem conceder qualquer permissão em qualquer protegível do servidor. Os usuários autorizados da permissão CONTROL em um banco de dados, como os membros da função de banco de dados fixa db_owner, podem conceder qualquer permissão para qualquer item de segurança do banco de dados. Os usuários autorizados da permissão CONTROL em um esquema podem conceder qualquer permissão em qualquer objeto dentro do esquema.

Exemplos

A tabela a seguir lista os protegíveis e os tópicos que descrevem a sintaxe específica a protegíveis.

Função de aplicativo

Permissões de principal do banco de dados GRANT (Transact-SQL)

Assembly

Permissões de assembly GRANT (Transact-SQL)

Chave assimétrica

Permissões de chave assimétrica GRANT (Transact-SQL)

Certificado

Permissões de certificado GRANT (Transact-SQL)

Contrato

Permissões GRANT do Agente de Serviços (Transact-SQL)

Banco de dados

Permissões de banco de dados GRANT (Transact-SQL)

Ponto de extremidade

Permissões de ponto de extremidade GRANT (Transact-SQL)

Catálogo de texto completo

Permissões de texto completo GRANT (Transact-SQL)

Lista de palavras irrelevantes de texto completo

Permissões de texto completo GRANT (Transact-SQL)

Função

Permissões de objeto GRANT (Transact-SQL)

Logon

Permissões de principal do servidor GRANT (Transact-SQL)

Tipo de mensagem

Permissões GRANT do Agente de Serviços (Transact-SQL)

Objeto

Permissões de objeto GRANT (Transact-SQL)

Fila

Permissões de objeto GRANT (Transact-SQL)

Associação de serviço remoto

Permissões GRANT do Agente de Serviços (Transact-SQL)

Função

Permissões de principal do banco de dados GRANT (Transact-SQL)

Rota

Permissões GRANT do Agente de Serviços (Transact-SQL)

Esquema

Permissões de esquema GRANT (Transact-SQL)

Servidor

Permissões de servidor GRANT (Transact-SQL)

Serviço

Permissões GRANT do Agente de Serviços (Transact-SQL)

Procedimento armazenado

Permissões de objeto GRANT (Transact-SQL)

Chave simétrica

Permissões de chave simétrica GRANT (Transact-SQL)

Sinônimo

Permissões de objeto GRANT (Transact-SQL)

Objetos do sistema

Permissões de objeto do sistema GRANT (Transact-SQL)

Tabela

Permissões de objeto GRANT (Transact-SQL)

Tipo

Permissões de tipo GRANT (Transact-SQL)

Usuário

Permissões de principal do banco de dados GRANT (Transact-SQL)

Exibição

Permissões de objeto GRANT (Transact-SQL)

Coleção de esquema XML

Permissões de coleção de esquema GRANT XML (Transact-SQL)