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

Aplica-se a:SQL ServerInstância Gerenciada de SQL do Azure

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

Convenções de sintaxe de Transact-SQL

Sintaxe

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

Observação

Para exibir a sintaxe do Transact-SQL para o SQL Server 2014 (12.x) e versões anteriores, confira a Documentação das versões anteriores.

Argumentos

[ sys. ]

O qualificador de sistema é necessário somente quando você está se referindo a exibições de catálogo e exibições de gerenciamento dinâmico.

system_object

Especifica o objeto no qual a permissão está sendo concedida.

principal

Especifica a entidade de segurança para o 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, modos de exibição, exibições de catálogo, modos de exibição de compatibilidade, modos de exibição, INFORMATION_SCHEMA modos de exibição 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.

Conceder 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 extras. Por exemplo, um usuário que recebe EXECUTE permissão não sp_addlinkedserver 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 de sistema só é necessário quando você está especificando exibições de catálogo e exibições de gerenciamento dinâmico.

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

As permissões em objetos do sistema são preservadas durante as atualizações do SQL Server.

Você deve estar no master banco de dados para conceder permissões, e a entidade de segurança para a qual você concede as permissões deve ser um usuário no master banco de dados. Ou seja, se forem permissões no nível do servidor, você não poderá concedê-las a entidades de servidor, apenas a entidades de banco de dados.

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

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

SELECT *
FROM master.sys.database_permissions AS dp
INNER 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

R. Conceder permissão SELECT em um modo de exibição

O exemplo a seguir concede a permissão de logon SQL ServerSylvester1 para selecionar uma exibição que lista logons do SQL Server. Em seguida, o exemplo concede a permissão extra necessária para exibir metadados em logons do SQL Server que o usuário não possui.

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

B. Conceder permissão EXECUTE em um procedimento armazenado estendido

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

USE master;
GO
GRANT EXECUTE ON xp_readmail TO Sylvester1;
GO