Compartilhar via


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

Aplica-se a: SQL Server Instâ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
[ ; ]

Argumentos

[ sys. ]

O qualificador sys é 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, exibições, exibições de catálogo, exibições de compatibilidade, INFORMATION_SCHEMA exibições, 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.

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 em 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 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 em 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 uma 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