Partilhar via


Permissões de objeto GRANT (Transact-SQL)

Concede permissões em uma tabela, exibição, função com valor de tabela, procedimento armazenado, procedimento armazenado estendido, função escalar, função de agregação, fila de serviço ou sinônimo.

Ícone de vínculo de tópico Convenções da sintaxe Transact-SQL

Sintaxe

GRANT <permission> [ ,...n ] ON 
    [ OBJECT :: ][ schema_name ]. object_name [ ( column [ ,...n ] ) ]
    TO <database_principal> [ ,...n ] 
    [ WITH GRANT OPTION ]
    [ AS <database_principal> ]

<permission> ::=
    ALL [ PRIVILEGES ] | permission [ ( column [ ,...n ] ) ]

<database_principal> ::= 
        Database_user 
    | Database_role 
    | Application_role 
    | Database_user_mapped_to_Windows_User 
    | Database_user_mapped_to_Windows_Group 
    | Database_user_mapped_to_certificate 
    | Database_user_mapped_to_asymmetric_key 
    | Database_user_with_no_login

Argumentos

  • permission
    Especifica uma permissão que pode ser concedida em um objeto contido em esquema. Para obter uma lista de permissões, consulte a seção Comentários mais adiante neste tópico.

  • ALL
    Conceder ALL não concede todas as permissões possíveis. Conceder ALL é equivalente a conceder todas as 92 permissões ANSI aplicáveis ao objeto especificado. O significado ALL varia desta forma:

    Permissões de função escalar: EXECUTE, REFERENCES.

    Permissões de função com valor de tabela: DELETE, INSERT, REFERENCES, SELECT, UPDATE.

    Permissões de procedimento armazenado: EXECUTE.

    Permissões de tabela: DELETE, INSERT, REFERENCES, SELECT, UPDATE.

    Permissões de exibição: DELETE, INSERT, REFERENCES, SELECT, UPDATE.

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

  • column
    Especifica o nome de uma coluna em uma tabela, exibição ou função com valor de tabela na qual a permissão está sendo concedida. Os parênteses ( ) são obrigatórios. Apenas permissões SELECT, REFERENCES e UPDATE podem ser concedidas em uma coluna. column pode ser especificado na cláusula de permissões ou depois do nome protegível.

    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 compatibilidade com versões anteriores.

  • ON [ OBJECT :: ] [ schema_name ]. object_name
    Especifica o objeto no qual a permissão está sendo concedida. A frase OBJECT será opcional se schema_name for especificado. Se a frase OBJECT for usada, o qualificador de escopo (::) será necessário. Se schema_name não for especificado, será usado o esquema padrão. Se schema_name for especificado, o qualificador de escopo de esquema (.) será necessário.

  • TO <database_principal>
    Especifica a entidade de segurança à qual a permissão está sendo concedida.

  • WITH GRANT OPTION
    Indica que o principal também terá a capacidade de conceder a permissão especificada a outros principais.

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

  • Database_user
    Especifica um usuário do banco de dados.

  • Database_role
    Especifica uma função de banco de dados.

  • Application_role
    Especifica uma função de aplicativo.

  • Database_user_mapped_to_Windows_User
    Especifica um usuário do banco de dados mapeado para um usuário do Windows.

  • Database_user_mapped_to_Windows_Group
    Especifica um usuário do banco de dados mapeado para um grupo do Windows.

  • Database_user_mapped_to_certificate
    Especifica um usuário do banco de dados mapeado para um certificado.

  • Database_user_mapped_to_asymmetric_key
    Especifica um usuário do banco de dados mapeado para uma chave assimétrica.

  • Database_user_with_no_login
    Especifica um usuário do banco de dados sem nenhuma entidade de segurança correspondente em nível de servidor.

Comentários

Observação importanteImportante

Uma combinação das permissões ALTER e REFERENCE em alguns casos pode permitir ao usuário autorizado exibir dados ou executar funções não autorizadas. Por exemplo: um usuário com permissão ALTER em uma tabela e permissão REFERENCE em uma função pode criar uma coluna computada em uma função e fazer com que seja executada. Nesse caso, o usuário também precisará da permissão SELECT na coluna computada.

As informações sobre objetos são visível em várias exibições do catálogo. Para obter mais informações, consulte Exibições do catálogo de objeto (Transact-SQL).

Um objeto é um protegível em nível de esquema contido pelo esquema que é seu pai na hierarquia de permissões. As permissões mais específicas e limitadas que podem ser concedidas em um objeto são listadas na tabela a seguir, junto com as permissões mais gerais que as contêm implicitamente.

Permissão de objeto

Implícito na permissão de objeto

Implícito na permissão de esquema

ALTER

CONTROL

ALTER

CONTROL

CONTROL

CONTROL

DELETE

CONTROL

DELETE

EXECUTE

CONTROL

EXECUTE

INSERT

CONTROL

INSERT

RECEIVE

CONTROL

CONTROL

REFERENCES

CONTROL

REFERENCES

SELECT

RECEIVE

SELECT

TAKE OWNERSHIP

CONTROL

CONTROL

UPDATE

CONTROL

UPDATE

VIEW CHANGE TRACKING

CONTROL

VIEW CHANGE TRACKING

VIEW DEFINITION

CONTROL

VIEW DEFINITION

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 a permissão que está sendo concedida implícita.

Se você estiver usando a opção AS, os requisitos adicionais a seguir serão aplicáveis.

AS

Permissão adicional necessária

Usuário de banco de dados

Permissão IMPERSONATE no usuário, associação à função de banco de dados fixa db_securityadmin, associação à função de banco de dados fixa db_owner ou associação à função de servidor fixa sysadmin.

Usuário de banco de dados mapeado para um logon do Windows

Permissão IMPERSONATE no usuário, associação à função de banco de dados fixa db_securityadmin, associação à função de banco de dados fixa db_owner ou associação à função de servidor fixa sysadmin.

Usuário de banco de dados mapeado para um grupo do Windows

Associação ao grupo do Windows, associação à função de banco de dados fixa db_securityadmin, associação à função de banco de dados fixa db_owner ou associação à função de servidor fixa sysadmin.

Usuário de banco de dados mapeado para um certificado

Associação à função de banco de dados fixa db_securityadmin, associação à função de banco de dados fixa db_owner ou associação à função de servidor fixa sysadmin.

Usuário de banco de dados mapeado para uma chave assimétrica

Associação à função de banco de dados fixa db_securityadmin, associação à função de banco de dados fixa db_owner ou associação à função de servidor fixa sysadmin.

Usuário de banco de dados não mapeado para nenhum principal de servidor

Permissão IMPERSONATE no usuário, associação à função de banco de dados fixa db_securityadmin, associação à função de banco de dados fixa db_owner ou associação à função de servidor fixa sysadmin.

Função de banco de dados

Permissão ALTER na função, associação à função de banco de dados fixa db_securityadmin, associação à função de banco de dados fixa db_owner ou associação à função de servidor fixa sysadmin.

Função de aplicativo

Permissão ALTER na função, associação à função de banco de dados fixa db_securityadmin, associação à função de banco de dados fixa db_owner ou associação à função de servidor fixa sysadmin.

Exemplos

A.Concedendo a permissão SELECT em uma tabela

O exemplo a seguir concede a permissão SELECT ao usuário RosaQdM na tabela Person.Address do banco de dados AdventureWorks2012.

USE AdventureWorks2012;
GRANT SELECT ON OBJECT::Person.Address TO RosaQdM;
GO

B.Concedendo a permissão EXECUTE em um procedimento armazenado

O exemplo a seguir concede a permissão EXECUTE no procedimento armazenado HumanResources.uspUpdateEmployeeHireInfo para uma função de aplicativo chamada Recruiting11.

USE AdventureWorks2012; 
GRANT EXECUTE ON OBJECT::HumanResources.uspUpdateEmployeeHireInfo
    TO Recruiting11;
GO 

C.Concedendo a permissão REFERENCES em uma exibição com GRANT OPTION

O exemplo a seguir concede a permissão REFERENCES na coluna BusinessEntityID na exibição HumanResources.vEmployee para o usuário Wanida com GRANT OPTION.

USE AdventureWorks2012;
GRANT REFERENCES (BusinessEntityID) ON OBJECT::HumanResources.vEmployee 
    TO Wanida WITH GRANT OPTION;
GO

D.Concedendo a permissão SELECT em uma tabela sem usar a frase OBJECT

O exemplo a seguir concede a permissão SELECT ao usuário RosaQdM na tabela Person.Address do banco de dados AdventureWorks2012.

USE AdventureWorks2012;
GRANT SELECT ON Person.Address TO RosaQdM;
GO

E.Concedendo a permissão SELECT em uma tabela a uma conta de domínio

O exemplo a seguir concede a permissão SELECT ao usuário AdventureWorks2012\RosaQdM na tabela Person.Address do banco de dados AdventureWorks2012.

USE AdventureWorks2012;
GRANT SELECT ON Person.Address TO [AdventureWorks2012\RosaQdM];
GO

F.Concedendo a permissão EXECUTE em um procedimento a uma função

O seguinte exemplo cria uma função e concede a permissão EXECUTE à função no procedimento uspGetBillOfMaterials do banco de dados AdventureWorks2012.

USE AdventureWorks2012;
CREATE ROLE newrole ;
GRANT EXECUTE ON dbo.uspGetBillOfMaterials TO newrole ;
GO

Consulte também

Referência

Permissões de objeto DENY (Transact-SQL)

permissões de objeto REVOKE (Transact-SQL)

Exibições do catálogo de objeto (Transact-SQL)

sys.fn_builtin_permissions (Transact-SQL)

HAS_PERMS_BY_NAME (Transact-SQL)

sys.fn_my_permissions (Transact-SQL)

Conceitos

Permissões (Mecanismo de Banco de Dados)

Entidades (Mecanismo de Banco de Dados)

Protegíveis