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

Concede 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

GRANT { 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 concedida.

  • principal
    Especifica o principal ao qual a permissão está sendo concedida.

Comentários

Essa instrução pode ser usada para conceder 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. Ara cada um desses objetos do sistema existe como um registro exclusivo no banco de dados de recursos do servidor (mssqlsystemresource). O banco de dados de recursos é somente leitura. Um link para o objeto é exposto como um registro no esquema sys de todo banco de dados. A permissão para executar ou selecionar um objeto do sistema pode ser concedida, negada e revogada.

A concessão de permissão para executar ou selecionar um objeto não transmite necessariamente todas as permissões necessárias para usar o objeto. A maioria dos objetos executa operações para as quais são necessárias permissões adicionais. Por exemplo, um usuário ao qual é concedida a permissão EXECUTE no sp_addlinkedserver não pode criar um servidor vinculado a menos que o usuário também seja membro da função de servidor fixa sysadmin.

A resolução de nome padrão resolve nomes de procedimento 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.

A concessão de permissões em gatilhos e em colunas de objetos do sistema não possui suporte.

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 consulta a seguir 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

A. Concedendo a permissão SELECT em uma exibição

O exemplo a seguir concede a permissão SQL Serverlogon Sylvester1 para selecionar uma exibição que lista logons do SQL Server. Depois, o exemplo concede a permissão adicional necessária para exibir metadados nos logons do SQL Server que não sejam de propriedade do usuário.

USE AdventureWorks2008R2;
GRANT SELECT ON sys.sql_logins TO Sylvester1;
GRANT VIEW SERVER STATE to Sylvester1;
GO

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

O exemplo a seguir concede a permissão EXECUTE em xp_readmail para Sylvester1.

GRANT EXECUTE ON xp_readmail TO Sylvester1;
GO