Permissões de objeto DENY (Transact-SQL)

Nega permissões em um membro da classe OBJECT de protegíveis. São membros da classe OBJECT: tabelas, exibições, funções com valor de tabela, procedimentos armazenados, procedimentos estendidos armazenados, funções escalares, funções de agregação, filas de serviço e sinônimos.

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

Sintaxe

DENY <permission> [ ,...n ] ON 
    [ OBJECT :: ][ schema_name ]. object_name [ ( column [ ,...n ] ) ]
        TO <database_principal> [ ,...n ] 
    [ CASCADE ]
        [ 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 negada 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
    A negação de ALL não nega todas as possíveis permissões. A negação de ALL é equivalente a negar todas as permissões ANSI-92 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 o ANSI-92. 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 negada. Os parênteses ( ) são necessários. Somente as permissões SELECT, REFERENCES e UPDATE podem ser negadas 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 negada. 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 o principal ao qual a permissão está sendo negada.

  • CASCADE
    Indica que a permissão que está sendo negada também é negada a outros principais aos quais ela foi concedida por esse principal.

  • AS <database_principal>
    Especifica um principal do qual o principal que executa esta consulta deriva seu direito de negar 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 nenhum principal correspondente no nível de servidor.

Comentários

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 negadas em um objeto são listadas na tabela a seguir, junto com as permissões mais gerais que as incluem 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

Requer a permissão CONTROL no objeto.

Se a cláusula AS for usada, o principal especificado deverá ser proprietário do objeto no qual as permissões estão sendo negadas.

Exemplos

A. Negação da permissão SELECT em uma tabela

O exemplo a seguir nega a permissão SELECT ao usuário RosaQdM na tabela Person.Address no AdventureWorks2008R2 banco de dados.

USE AdventureWorks2008R2;
DENY SELECT ON OBJECT::Person.Address TO RosaQdM;
GO

B. Negação da permissão EXECUTE em um procedimento armazenado

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

USE AdventureWorks2008R2;
DENY EXECUTE ON OBJECT::HumanResources.uspUpdateEmployeeHireInfo
    TO Recruiting11;
GO 

C. Negação da permissão REFERENCES em uma exibição com CASCADE

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

USE AdventureWorks2008R2;
DENY REFERENCES (BusinessEntityID) ON OBJECT::HumanResources.vEmployee 
    TO Wanida CASCADE;
GO