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

Nega permissões em objetos do sistema, como procedimentos armazenados, procedimentos armazenados estendidos, funções e exibições.

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

Sintaxe

DENY { SELECT | EXECUTE } ON [ sys.]system_object TO principal 

Argumentos

  • [ sys.]
    O qualificador sys só é necessário quando você está referenciando exibições do catálogo e exibições de gerenciamento dinâmico.

  • system_object
    Especifica o objeto no qual a permissão está sendo negada.

  • principal
    Especifica a entidade da qual a permissão está sendo revogada.

Comentários

Essa instrução pode ser usada para negar permissões em determinados procedimentos armazenados, procedimentos armazenados estendidos, funções com valor de tabela, funções escalares, exibições, exibições do catálogo, exibições de compatibilidade, exibições INFORMATION_SCHEMA, exibições de gerenciamento dinâmico e tabelas do sistema instaladas pelo SQL Server. Cada um desses objetos do sistema existe como um registro exclusivo no banco de dados de recursos (mssqlsystemresource). O banco de dados de recursos é somente leitura. Um link para o objeto é exposto como um registro no esquema sys de cada banco de dados.

A resolução de nomes padrão resolve nomes de procedimentos não qualificados para o banco de dados de recursos. Portanto, o qualificador sys é necessário somente quando você está especificando exibições do catálogo e exibições de gerenciamento dinâmico.

Observação sobre cuidadosCuidado

A negação de permissões em objetos do sistema causará falha nos aplicativos que dependem delas. O SQL Server Management Studio usa exibições do catálogo e poderá não funcionar conforme o esperado se as permissões padrão forem alteradas em exibições do catálogo.

Não há suporte para a negação de permissões em gatilhos e colunas de objetos do sistema.

As permissões em objetos do sistema serão preservadas nas atualizações do SQL Server.

Os objetos do sistema são visíveis na exibição do catálogo sys.system_objects. As permissões em objetos do sistema são visíveis na exibição do catálogo sys.database_permissions do banco de dados mestre.

A seguinte consulta retorna informações sobre permissões de objetos do sistema:

SELECT * FROM master.sys.database_permissions AS dp 
    JOIN sys.system_objects AS so
    ON dp.major_id = so.object_id
    WHERE dp.class = 1 AND so.parent_object_id = 0 ;
GO

Permissões

Requer a permissão CONTROL SERVER.

Exemplos

O exemplo a seguir nega a permissão EXECUTE em xp_cmdshell a public.

DENY EXECUTE ON sys.xp_cmdshell TO public;
GO