GRANT (Transact-SQL)GRANT (Transact-SQL)

ESTE TÓPICO APLICA-SE A: simSQL Server (a partir de 2008)simBanco de Dados SQL do Microsoft AzuresimAzure SQL Data Warehouse simParallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

Concede permissões em um protegível a uma entidade.Grants permissions on a securable to a principal. O conceito geral é para GRANT <alguma permissão > ON <algum objeto > TO <algum usuário, logon ou grupo >.The general concept is to GRANT <some permission> ON <some object> TO <some user, login, or group>. Para obter uma discussão geral sobre permissões, consulte permissões ( mecanismo de banco de dados ).For a general discussion of permissions, see Permissions (Database Engine).

Ícone de link do tópico Convenções da sintaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

-- Syntax for SQL Server and Azure SQL Database  

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

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  
}  

ArgumentosArguments

ALLALL
Esta opção está preterida e é mantida apenas para compatibilidade com versões anteriores.This option is deprecated and maintained only for backward compatibility. Ela não concede todas as permissões possíveis.It does not grant all possible permissions. A concessão de ALL é equivalente a conceder as seguintes permissões.Granting ALL is equivalent to granting the following permissions.

  • 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.If the securable is a database, ALL means BACKUP DATABASE, BACKUP LOG, CREATE DATABASE, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLE, and CREATE VIEW.

  • Se o protegível for uma função escalar, ALL será equivalente a EXECUTE e REFERENCES.If the securable is a scalar function, ALL means EXECUTE and REFERENCES.

  • Se o protegível for uma função com valor de tabela, ALL será equivalente a DELETE, INSERT, REFERENCES, SELECT e UPDATE.If the securable is a table-valued function, ALL means DELETE, INSERT, REFERENCES, SELECT, and UPDATE.

  • Se o protegível for um procedimento armazenado, ALL será equivalente a EXECUTE.If the securable is a stored procedure, ALL means EXECUTE.

  • Se o protegível for uma tabela, ALL será equivalente a DELETE, INSERT, REFERENCES, SELECT e UPDATE.If the securable is a table, ALL means DELETE, INSERT, REFERENCES, SELECT, and UPDATE.

  • Se o protegível for uma exibição, ALL será equivalente a DELETE, INSERT, REFERENCES, SELECT e UPDATE.If the securable is a view, ALL means DELETE, INSERT, REFERENCES, SELECT, and UPDATE.

PRIVILEGESPRIVILEGES
Incluído para conformidade com ISO.Included for ISO compliance. Não altera o comportamento de ALL.Does not change the behavior of ALL.

permissãopermission
É o nome de uma permissão.Is the name of a permission. Os mapeamentos válidos de permissões para protegíveis são descritos nos subtópicos listados a seguir.The valid mappings of permissions to securables are described in the sub-topics listed below.

colunacolumn
Especifica o nome de uma coluna em uma tabela na qual estão sendo concedidas permissões.Specifies the name of a column in a table on which permissions are being granted. Os parênteses () são necessários.The parentheses () are required.

classeclass
Especifica a classe do protegível na qual a permissão está sendo concedida.Specifies the class of the securable on which the permission is being granted. O qualificador de escopo :: é necessária.The scope qualifier :: is required.

protegívelsecurable
Especifica o protegível no qual a permissão está sendo concedida.Specifies the securable on which the permission is being granted.

PARA principalTO principal
É o nome de uma entidade.Is the name of a principal. As entidades para as quais permissões em um protegível podem ser concedidas variam, dependendo do protegível.The principals to which permissions on a securable can be granted vary, depending on the securable. Consulte os subtópicos listados a seguir para obter combinações válidas.See the sub-topics listed below for valid combinations.

GRANT OPTIONGRANT OPTION
Indica que o usuário autorizado também poderá conceder a permissão especificada a outras entidades.Indicates that the grantee will also be given the ability to grant the specified permission to other principals.

AS principalAS principal
Use a cláusula principal para indicar que a entidade de segurança registrada como o concessor da permissão deve ser uma entidade de segurança diferente da pessoa que executa a instrução.Use the AS principal clause to indicate that the principal recorded as the grantor of the permission should be a principal other than the person executing the statement. Por exemplo, suponha que o usuário Mary é principal_id 12 e usuário Raul é 15 principal.For example, presume that user Mary is principal_id 12 and user Raul is principal 15. Mary executa GRANT SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul; agora a tabela database_permissions indicará que o grantor_prinicpal_id foi 15 (Raul), embora na verdade, a instrução foi executada pelo usuário 13 (Mary).Mary executes GRANT SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul; Now the sys.database_permissions table will indicate that the grantor_prinicpal_id was 15 (Raul) even though the statement was actually executed by user 13 (Mary).

Usando a cláusula geralmente não é recomendado, a menos que você precisa definir explicitamente a cadeia de permissão.Using the AS clause is typically not recommended unless you need to explicitly define the permission chain. Para obter mais informações, consulte o resumo do algoritmo de verificação de permissão seção permissões (mecanismo de banco de dados).For more information, see the Summary of the Permission Check Algorithm section of Permissions (Database Engine).

O uso de como esta instrução não implica a capacidade de representar outro usuário.The use of AS in this statement does not imply the ability to impersonate another user.

ComentáriosRemarks

A sintaxe completa da instrução GRANT é complexa.The full syntax of the GRANT statement is complex. O diagrama de sintaxe acima foi simplificado para chamar atenção para sua estrutura.The syntax diagram above was simplified to draw attention to its structure. A sintaxe completa para conceder permissões em protegíveis específicos é descrita nos tópicos listados a seguir.Complete syntax for granting permissions on specific securables is described in the topics listed below.

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.The REVOKE statement can be used to remove granted permissions, and the DENY statement can be used to prevent a principal from gaining a specific permission through a GRANT.

A concessão de uma permissão remove DENY ou REVOKE daquela permissão no protegível especificado.Granting a permission removes DENY or REVOKE of that permission on the specified securable. Se a mesma permissão for negada a um escopo mais alto que contém o protegível, o DENY terá precedência.If the same permission is denied at a higher scope that contains the securable, the DENY takes precedence. Mas a revogação da permissão concedida em um escopo mais alto não tem precedência.But revoking the granted permission at a higher scope does not take precedence.

Permissões em nível de banco de dados são concedidas dentro do escopo do banco de dados especificado.Database-level permissions are granted within the scope of the specified database. 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.If a user needs permissions to objects in another database, create the user account in the other database, or grant the user account access to the other database, as well as the current database.

Cuidado

Um DENY em nível de tabela não tem precedência sobre um GRANT em nível de coluna.A table-level DENY does not take precedence over a column-level GRANT. Essa inconsistência na hierarquia de permissões foi preservada para manter a compatibilidade com versões anteriores.This inconsistency in the permissions hierarchy has been preserved for the sake of backward compatibility. Ela será removida em uma versão futura.It will be removed in a future release.

O procedimento armazenado do sistema sp_helprotect relata as permissões em um protegível no nível de banco de dados.The sp_helprotect system stored procedure reports permissions on a database-level securable.

WITH GRANT OPTIONWITH GRANT OPTION

O GRANT ...The GRANT COM a opção GRANT Especifica que a entidade de segurança que recebe a permissão recebe a capacidade de conceder a permissão especificada para outras contas de segurança.WITH GRANT OPTION specifies that the security principal receiving the permission is given the ability to grant the specified permission to other security accounts. Quando a entidade que recebe a permissão é uma função ou um grupo do Windows, o AS cláusula deve ser usada quando a permissão de objeto deve ser concedida a usuários que não são membros do grupo ou função.When the principal that receives the permission is a role or a Windows group, the AS clause must be used when the object permission needs to be further granted to users who are not members of the group or role. Porque somente um usuário, em vez de um grupo ou função, pode executar uma GRANT instrução, um membro específico de grupo ou função deve usar o AS cláusula para invocar a associação de função ou grupo explicitamente ao conceder a permissão.Because only a user, rather than a group or role, can execute a GRANT statement, a specific member of the group or role must use the AS clause to explicitly invoke the role or group membership when granting the permission. A exemplo a seguir mostra como o WITH GRANT OPTION é usado quando concedido a uma função ou grupo do Windows.The following example shows how the WITH GRANT OPTION is used when granted to a role or Windows group.

-- 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 ServerChart of SQL Server Permissions

Para obter um cartaz gráfico dimensionado de todas as permissões do Mecanismo de Banco de DadosDatabase Engine em formato pdf, veja http://go.microsoft.com/fwlink/?LinkId=229142.For a poster sized chart of all Mecanismo de Banco de DadosDatabase Engine permissions in pdf format, see http://go.microsoft.com/fwlink/?LinkId=229142.

PermissõesPermissions

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 a permissão que está sendo concedida implícita.The grantor (or the principal specified with the AS option) must have either the permission itself with GRANT OPTION, or a higher permission that implies the permission being granted. Se a opção AS for usada, requisitos adicionais se aplicarão.If using the AS option, additional requirements apply. Consulte o tópico específico sobre protegíveis para obter detalhes.See the securable-specific topic for details.

Os proprietários de objetos podem conceder permissões nos objetos de sua propriedade.Object owners can grant permissions on the objects they own. Principais com a permissão CONTROL em um item protegível podem conceder permissão nesse item.Principals with CONTROL permission on a securable can grant permission on that securable.

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.Grantees of CONTROL SERVER permission, such as members of the sysadmin fixed server role, can grant any permission on any securable in the server. 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.Grantees of CONTROL permission on a database, such as members of the db_owner fixed database role, can grant any permission on any securable in the database. Os usuários autorizados da permissão CONTROL em um esquema podem conceder qualquer permissão em qualquer objeto dentro do esquema.Grantees of CONTROL permission on a schema can grant any permission on any object within the schema.

ExemplosExamples

A tabela a seguir lista os protegíveis e os tópicos que descrevem a sintaxe específica de protegíveis.The following table lists the securables and the topics that describe the securable-specific syntax.

Função de aplicativoApplication Role CONCEDER permissões de entidade de banco de dados ( Transact-SQL )GRANT Database Principal Permissions (Transact-SQL)
AssemblyAssembly CONCEDER permissões de Assembly ( Transact-SQL )GRANT Assembly Permissions (Transact-SQL)
Chave assimétricaAsymmetric Key CONCEDER permissões de chave assimétrica ( Transact-SQL )GRANT Asymmetric Key Permissions (Transact-SQL)
Grupo de disponibilidadeAvailability Group Permissões de grupo de disponibilidade GRANT ( Transact-SQL )GRANT Availability Group Permissions (Transact-SQL)
CertificadoCertificate Permissões de certificado GRANT ( Transact-SQL )GRANT Certificate Permissions (Transact-SQL)
ContratoContract Permissões do GRANT Service Broker ( Transact-SQL )GRANT Service Broker Permissions (Transact-SQL)
Banco de DadosDatabase Permissões de banco de dados GRANT ( Transact-SQL )GRANT Database Permissions (Transact-SQL)
Credencial com escopo de banco de dadosDatabase Scoped Credential Escopo do banco de dados GRANT credencial (Transact-SQL)GRANT Database Scoped Credential (Transact-SQL)
Ponto de extremidadeEndpoint CONCEDER permissões de ponto de extremidade ( Transact-SQL )GRANT Endpoint Permissions (Transact-SQL)
Catálogo de texto completoFull-Text Catalog Permissões de texto completo GRANT ( Transact-SQL )GRANT Full-Text Permissions (Transact-SQL)
Lista de palavras irrelevantes de texto completoFull-Text Stoplist Permissões de texto completo GRANT ( Transact-SQL )GRANT Full-Text Permissions (Transact-SQL)
FunçãoFunction Permissões de objeto GRANT ( Transact-SQL )GRANT Object Permissions (Transact-SQL)
LogonLogin CONCEDER permissões de entidade do servidor ( Transact-SQL )GRANT Server Principal Permissions (Transact-SQL)
Tipo de mensagemMessage Type Permissões do GRANT Service Broker ( Transact-SQL )GRANT Service Broker Permissions (Transact-SQL)
ObjetoObject Permissões de objeto GRANT ( Transact-SQL )GRANT Object Permissions (Transact-SQL)
FilaQueue Permissões de objeto GRANT ( Transact-SQL )GRANT Object Permissions (Transact-SQL)
Associação de serviço remotoRemote Service Binding Permissões do GRANT Service Broker ( Transact-SQL )GRANT Service Broker Permissions (Transact-SQL)
FunçãoRole CONCEDER permissões de entidade de banco de dados ( Transact-SQL )GRANT Database Principal Permissions (Transact-SQL)
RotaRoute Permissões do GRANT Service Broker ( Transact-SQL )GRANT Service Broker Permissions (Transact-SQL)
esquemaSchema Permissões de esquema GRANT ( Transact-SQL )GRANT Schema Permissions (Transact-SQL)
Lista de propriedades de pesquisaSearch Property List Permissões de lista de propriedades de pesquisa GRANT ( Transact-SQL )GRANT Search Property List Permissions (Transact-SQL)
ServidorServer Permissões de servidor GRANT (Transact-SQL)GRANT Server Permissions (Transact-SQL)
ServiçoService Permissões do GRANT Service Broker ( Transact-SQL )GRANT Service Broker Permissions (Transact-SQL)
Procedimento armazenadoStored Procedure Permissões de objeto GRANT ( Transact-SQL )GRANT Object Permissions (Transact-SQL)
Chave simétricaSymmetric Key CONCEDER permissões de chave simétrica ( Transact-SQL )GRANT Symmetric Key Permissions (Transact-SQL)
SinônimoSynonym Permissões de objeto GRANT ( Transact-SQL )GRANT Object Permissions (Transact-SQL)
Objetos do sistemaSystem Objects Permissões de objeto do sistema GRANT (Transact-SQL)GRANT System Object Permissions (Transact-SQL)
TableTable Permissões de objeto GRANT ( Transact-SQL )GRANT Object Permissions (Transact-SQL)
TipoType Tipo de concessão de permissões ( Transact-SQL )GRANT Type Permissions (Transact-SQL)
UsuárioUser CONCEDER permissões de entidade de banco de dados ( Transact-SQL )GRANT Database Principal Permissions (Transact-SQL)
ExibiçãoView Permissões de objeto GRANT ( Transact-SQL )GRANT Object Permissions (Transact-SQL)
Coleção de esquema XMLXML Schema Collection CONCEDER permissões de coleção de esquemas XML ( Transact-SQL )GRANT XML Schema Collection Permissions (Transact-SQL)

Consulte tambémSee Also

DENY (Transact-SQL) DENY (Transact-SQL)
REVOKE (Transact-SQL) REVOKE (Transact-SQL)
sp_addlogin (Transact-SQL) sp_addlogin (Transact-SQL)
sp_adduser (Transact-SQL) sp_adduser (Transact-SQL)
sp_changedbowner ( Transact-SQL ) sp_changedbowner (Transact-SQL)
sp_dropuser (Transact-SQL) sp_dropuser (Transact-SQL)
sp_helprotect ( Transact-SQL ) sp_helprotect (Transact-SQL)
sp_helpuser ( Transact-SQL )sp_helpuser (Transact-SQL)