GRANT (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)Ponto de extremidade de SQL no Microsoft FabricWarehouse no Microsoft Fabric

Concede permissões em um protegível a uma entidade. O conceito geral é .GRANT <some permission> ON <some object> TO <some user, login, or group> Para obter uma discussão geral sobre permissões, confira Permissões (Mecanismo de Banco de Dados).

Convenções de sintaxe de Transact-SQL

Sintaxe

Sintaxe para SQL Server e Banco de Dados SQL do Azure.

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

Sintaxe para Azure Synapse Analytics e Parallel Data Warehouse e Microsoft Fabric.

GRANT
    <permission> [ , ...n ]
    [ ON [ <class_type> :: ] securable ]
    TO principal [ , ...n ]
    [ WITH GRANT OPTION ]
[;]

<permission> ::=
{ see the tables below }

<class_type> ::=
{
      LOGIN
    | DATABASE
    | OBJECT
    | ROLE
    | SCHEMA
    | USER
}

Observação

Para exibir a sintaxe do Transact-SQL para o SQL Server 2014 (12.x) e versões anteriores, confira a Documentação das versões anteriores.

Argumentos

ALL

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

Protegível Permissões
Backup de banco de dados BACKUP DATABASE, , , , , , CREATE PROCEDURE, , CREATE RULECREATE DEFAULTBACKUP LOGCREATE DATABASECREATE TABLEe CREATE FUNCTIONCREATE VIEW
Função de valor escalar EXECUTE e REFERENCES
Função com valor de tabela DELETE, INSERT, REFERENCES, SELECT e UPDATE
Procedimento armazenado EXECUTE
Tabela DELETE, INSERT, REFERENCES, SELECT e UPDATE
Exibir DELETE, INSERT, REFERENCES, SELECT e UPDATE

PRIVILEGES

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

permission

O nome de uma permissão. Os mapeamentos válidos de permissões para protegíveis são descritos nas seções a seguir.

column

Especifica o nome de uma coluna em uma tabela na qual estão sendo concedidas permissões. Os parênteses e ) são obrigató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 de segurança. As entidades para as quais permissões em um protegível podem ser concedidas variam, dependendo do protegível. Consulte as seções 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

Use a cláusula para indicar que o comitente registrado como concedente da permissão deve ser um comitente diferente da pessoa que executa a AS <principal> declaração. Por exemplo, suponha que o usuário tem um principal_id de , e o usuário MaryRaul é principal 1512. Mary executa GRANT SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul; Agora a tabela indica que o grantor_prinicpal_id foi 15 () mesmo que a sys.database_permissions instrução tenha sido realmente executada pelo usuário 12 (RaulMary).

O uso da AS cláusula normalmente não é recomendado, a menos que você precise definir explicitamente a cadeia de permissões. Para obter mais informações, consulte Resumo do algoritmo de verificação de permissão.

O uso de nesta declaração não implica a capacidade de AS se passar por outro usuário.

Comentários

A sintaxe completa da GRANT instrução é complexa. O diagrama de sintaxe anterior foi simplificado para chamar a atenção para sua estrutura. A sintaxe completa para conceder permissões em protegíveis específicos é descrita nos artigos listados posteriormente neste artigo.

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

A concessão de uma permissão remove DENY ou REVOKE dessa permissão no protegível especificado. Se a mesma permissão for negada em um escopo superior que contenha a protegível, a DENY permissão terá precedência. Mas revogar a permissão concedida em um escopo maior 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.

Cuidado

Um nível de tabela não tem precedência sobre um nível DENYGRANTde 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 sp_helprotect procedimento armazenado do sistema relata permissões em um nível de banco de dados protegível.

No Microsoft Fabric, CREATE USER não pode ser executado explicitamente no momento. Quando GRANT ou DENY é executado, o usuário é criado automaticamente.

WITH GRANT OPTION

O GRANT ... WITH GRANT OPTION especifica que a entidade de segurança que recebe a permissão recebe a capacidade de conceder a permissão especificada a outras contas de segurança. Quando a entidade de segurança que recebe a permissão é uma função ou um grupo do Windows, a cláusula deve ser usada quando a AS permissão de objeto precisa ser concedida a usuários que não são membros do grupo ou função. Como apenas um usuário, em vez de um grupo ou função, pode executar uma GRANT instrução, um membro específico do grupo ou função deve usar a cláusula para invocar explicitamente a função ou associação de grupo ao conceder a AS permissão. O exemplo a seguir mostra como o WITH GRANT OPTION é usado quando concedido a uma função ou 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 TestProc TO User2;

-- The following succeeds because User1 invokes the TesterRole membership
GRANT EXECUTE ON TestProc TO User2 AS TesterRole;

Gráfico de permissões do SQL Server

Para obter um gráfico do tamanho de um pôster de todas as permissões do Mecanismo de Banco de Dados no formato PDF, consulte https://aka.ms/sql-permissions-poster.

Permissões

O concedente (ou o principal especificado com a opção) deve ter a permissão em si com GRANT OPTION, ou uma permissão superior que implique a AS permissão que está sendo concedida. Se estiver usando a AS opção, requisitos adicionais se aplicam. Consulte o artigo específico do protegível para ver os detalhes.

Os proprietários de objetos podem conceder permissões nos objetos de sua propriedade. Entidades com CONTROL permissão em um protegível podem conceder permissão sobre esse protegível.

Os beneficiários de permissão, como membros da função de CONTROL SERVER servidor fixa sysadmin, podem conceder qualquer permissão em qualquer protegível no servidor. Os beneficiários de permissão em um banco de dados, como membros da função de banco de CONTROL dados fixa db_owner, podem conceder qualquer permissão em qualquer protegível no banco de dados. Os beneficiários de CONTROL permissão 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 artigos que descrevem a sintaxe específica do protegível.

Protegível Sintaxe de GRANT
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)
Grupo de disponibilidade Permissões de grupo de disponibilidade 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)
Credencial no escopo do banco de dados Credencial GRANT no escopo do banco de dados (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 entidade de segurança 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)
Lista de propriedades de pesquisa Permissões de lista de propriedades de pesquisa 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)
Visualizar Permissões de objeto GRANT (Transact-SQL)
Coleção de esquema XML Permissões de coleção de esquema GRANT XML (Transact-SQL)