Permissões de banco de dados GRANT (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)Ponto de extremidade de SQL no Microsoft FabricWarehouse no Microsoft Fabric

Concede permissões em um banco de dados no SQL Server.

Convenções de sintaxe de Transact-SQL

Sintaxe


GRANT <permission> [ ,...n ]
    TO <database_principal> [ ,...n ] [ WITH GRANT OPTION ]
    [ AS <database_principal> ]

<permission>::=
permission | ALL [ PRIVILEGES ]

<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

Observação

Para ver 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

permission Especifica uma permissão que pode ser concedida em um banco de dados. Para obter uma lista de permissões, consulte a seção Comentários mais adiante neste tópico.

ALL Esta opção não concede todas as permissões possíveis. A concessão ALL é equivalente a conceder as seguintes permissões: BACKUP DATABASE, BACKUP LOG, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLE e CREATE VIEW.

PRIVILEGES Incluídos para conformidade com ANSI-92. Não altera o comportamento de ALL.

WITH GRANT OPTION Indica que a entidade de segurança também terá a capacidade de conceder a permissão especificada a outros principais.

AS <database_principal> Especifica uma entidade de segurança por meio da qual a entidade de segurança que executa essa consulta obtém seu direito de conceder a permissão.

Database_user Especifica um usuário de banco de dados.

Database_role Especifica uma função de banco de dados.

Application_roleAplica-se a: SQL Server 2008 (10.0.x) e posterior e Banco de Dados SQL do Azure

Especifica uma função de aplicativo.

Database_user_mapped_to_Windows_UserAplica-se a: SQL Server 2008 (10.0.x) e posterior

Especifica um usuário do banco de dados mapeado para um usuário do Windows.

Database_user_mapped_to_Windows_GroupAplica-se a: SQL Server 2008 (10.0.x) e posterior

Especifica um usuário do banco de dados mapeado para um grupo do Windows.

Database_user_mapped_to_certificateAplica-se a: SQL Server 2008 (10.0.x) e posterior

Especifica um usuário do banco de dados mapeado para um certificado.

Database_user_mapped_to_asymmetric_keyAplica-se a: SQL Server 2008 (10.0.x) e posterior

Especifica um usuário do banco de dados mapeado para uma chave assimétrica.

Database_user_with_no_login Especifica um usuário de banco de dados sem entidade de segurança no nível do servidor correspondente.

Comentários

Importante

Uma combinação das permissões ALTER e REFERENCE em alguns casos pode permitir ao usuário autorizado exibir dados ou executar funções não autorizadas. Por exemplo: Um usuário com a permissão ALTER em uma tabela e a permissão REFERENCE em uma função pode criar uma coluna computada em uma função e fazer com que ela seja executada. Nesse caso, o usuário também precisará da permissão SELECT na coluna computada.

Um banco de dados é um protegível contido no servidor pai na hierarquia de permissões. As permissões mais específicas e limitadas que podem ser concedidas em um banco de dados são listadas na tabela a seguir, junto com as permissões mais gerais que as incluem implicitamente.

Permissão de banco de dados Implícito na permissão de banco de dados Implícito na permissão de servidor
ADMINISTRAR OPERAÇÕES EM LOTE DO BANCO DE DADOS
Aplica-se a: Banco de Dados SQL.
CONTROL CONTROL SERVER
ALTER CONTROL ALTER ANY DATABASE
ALTER ANY APPLICATION ROLE ALTER CONTROL SERVER
ALTER ANY ASSEMBLY ALTER CONTROL SERVER
ALTER ANY ASYMMETRIC KEY ALTER CONTROL SERVER
ALTER ANY CERTIFICATE ALTER CONTROL SERVER
ALTER ANY COLUMN ENCRYPTION KEY ALTER CONTROL SERVER
ALTERAR QUALQUER DEFINIÇÃO DE CHAVE MESTRA DE COLUNA ALTER CONTROL SERVER
ALTER ANY CONTRACT ALTER CONTROL SERVER
ALTER ANY DATABASE AUDIT ALTER ALTER ANY SERVER AUDIT
ALTER ANY DATABASE DDL TRIGGER ALTER CONTROL SERVER
ALTER ANY DATABASE EVENT NOTIFICATION ALTER ALTER ANY EVENT NOTIFICATION
ALTER ANY DATABASE EVENT SESSION
Aplica-se a: Banco de Dados SQL.
ALTER ALTER ANY EVENT SESSION
ALTER ANY DATABASE SCOPED CONFIGURATION
Aplica-se a: SQL Server 2016 (13.x) e posterior, Banco de Dados SQL.
CONTROL CONTROL SERVER
ALTER ANY DATASPACE ALTER CONTROL SERVER
ALTER ANY EXTERNAL DATA SOURCE ALTER CONTROL SERVER
ALTER ANY EXTERNAL FILE FORMAT ALTER CONTROL SERVER
ALTERAR QUALQUER BIBLIOTECA EXTERNA
Aplica-se a: SQL Server 2017 (14.x).
CONTROL CONTROL SERVER
ALTER ANY FULLTEXT CATALOG ALTER CONTROL SERVER
ALTER ANY MASK CONTROL CONTROL SERVER
ALTER ANY MESSAGE TYPE ALTER CONTROL SERVER
ALTER ANY REMOTE SERVICE BINDING ALTER CONTROL SERVER
ALTER ANY ROLE ALTER CONTROL SERVER
ALTER ANY ROUTE ALTER CONTROL SERVER
ALTER ANY SCHEMA ALTER CONTROL SERVER
ALTER ANY SECURITY POLICY
Aplica-se a: Banco de Dados SQL do Azure.
CONTROL CONTROL SERVER
ALTERAR QUALQUER CLASSIFICAÇÃO DE SENSIBILIDADE
Aplica-se a: SQL Server (SQL Server 2019 e posterior), Banco de Dados SQL do Azure.
CONTROL CONTROL SERVER
ALTER ANY SERVICE ALTER CONTROL SERVER
ALTER ANY SYMMETRIC KEY ALTER CONTROL SERVER
ALTER ANY USER ALTER CONTROL SERVER
AUTHENTICATE CONTROL AUTHENTICATE SERVER
BACKUP DATABASE CONTROL CONTROL SERVER
BACKUP LOG CONTROL CONTROL SERVER
CHECKPOINT CONTROL CONTROL SERVER
CONECTAR CONNECT REPLICATION CONTROL SERVER
CONNECT REPLICATION CONTROL CONTROL SERVER
CONTROL CONTROL CONTROL SERVER
CREATE AGGREGATE ALTER CONTROL SERVER
CREATE ANY EXTERNAL LIBRARY
Aplica-se a: SQL Server 2017 (14.x).
CONTROL CONTROL SERVER
CREATE ASSEMBLY ALTER ANY ASSEMBLY CONTROL SERVER
CREATE ASYMMETRIC KEY ALTER ANY ASYMMETRIC KEY CONTROL SERVER
CREATE CERTIFICATE ALTER ANY CERTIFICATE CONTROL SERVER
CREATE CONTRACT ALTER ANY CONTRACT CONTROL SERVER
CREATE DATABASE CONTROL CREATE ANY DATABASE
CREATE DATABASE DDL EVENT NOTIFICATION ALTER ANY DATABASE EVENT NOTIFICATION CREATE DDL EVENT NOTIFICATION
CREATE DEFAULT ALTER CONTROL SERVER
CREATE FULLTEXT CATALOG ALTER ANY FULLTEXT CATALOG CONTROL SERVER
CREATE FUNCTION ALTER CONTROL SERVER
CREATE MESSAGE TYPE ALTER ANY MESSAGE TYPE CONTROL SERVER
CREATE PROCEDURE ALTER CONTROL SERVER
CREATE QUEUE ALTER CONTROL SERVER
CREATE REMOTE SERVICE BINDING ALTER ANY REMOTE SERVICE BINDING CONTROL SERVER
CREATE ROLE ALTER ANY ROLE CONTROL SERVER
CREATE ROUTE ALTER ANY ROUTE CONTROL SERVER
CREATE RULE ALTER CONTROL SERVER
CREATE SCHEMA ALTER ANY SCHEMA CONTROL SERVER
CREATE SERVICE ALTER ANY SERVICE CONTROL SERVER
CREATE SYMMETRIC KEY ALTER ANY SYMMETRIC KEY CONTROL SERVER
CREATE SYNONYM ALTER CONTROL SERVER
CREATE TABLE ALTER CONTROL SERVER
CREATE TYPE ALTER CONTROL SERVER
CREATE VIEW ALTER CONTROL SERVER
CREATE XML SCHEMA COLLECTION ALTER CONTROL SERVER
Delete (excluir) CONTROL CONTROL SERVER
Execute CONTROL CONTROL SERVER
EXECUTE ANY EXTERNAL ENDPOINT
Aplica-se a: Banco de Dados SQL do Azure.
CONTROL CONTROL SERVER
EXECUTE ANY EXTERNAL SCRIPT
Aplica-se a: SQL Server 2016 (13.x).
CONTROL CONTROL SERVER
EXECUTE EXTERNAL SCRIPT
Aplica-se a: SQL Server 2019 (15.x).
EXECUTE ANY EXTERNAL SCRIPT CONTROL SERVER
INSERT CONTROL CONTROL SERVER
KILL DATABASE CONNECTION
Aplica-se a: Banco de Dados SQL do Azure.
CONTROL ALTER ANY CONNECTION
REFERENCES CONTROL CONTROL SERVER
SELECT CONTROL CONTROL SERVER
SHOWPLAN CONTROL ALTER TRACE
SUBSCRIBE QUERY NOTIFICATIONS CONTROL CONTROL SERVER
TAKE OWNERSHIP CONTROL CONTROL SERVER
UNMASK CONTROL CONTROL SERVER
UPDATE CONTROL CONTROL SERVER
VIEW ANY COLUMN ENCRYPTION KEY DEFINITION CONTROL VIEW ANY DEFINITION
VIEW ANY COLUMN MASTER KEY DEFINITION CONTROL VIEW ANY DEFINITION
VIEW DATABASE STATE CONTROL VIEW SERVER STATE
VIEW DEFINITION CONTROL VIEW ANY DEFINITION

Permissões

O concessor (ou a entidade de segurança especificada com a opção AS) deve ter a própria permissão com GRANT OPTION ou uma permissão superior que tenha a permissão que está sendo concedida implícita.

Se você estiver usando a opção AS, os requisitos adicionais a seguir serão aplicáveis.

AS granting_principal Permissão adicional necessária
Usuário de banco de dados Permissão IMPERSONATE no usuário, associação na função de banco de dados fixa db_securityadmin, associação na função de banco de dados fixa db_owner ou associação na função de servidor fixa sysadmin.
Usuário de banco de dados mapeado para um logon do Windows Permissão IMPERSONATE no usuário, associação na função de banco de dados fixa db_securityadmin, associação na função de banco de dados fixa db_owner ou associação na função de servidor fixa sysadmin.
Usuário de banco de dados mapeado para um grupo do Windows Associação no grupo do Windows, associação na função de banco de dados fixa db_securityadmin, associação na função de banco de dados fixa db_owner ou associação na função de servidor fixa sysadmin.
Usuário de banco de dados mapeado para um certificado Associação na função de banco de dados fixa db_securityadmin, associação na função de banco de dados fixa db_owner ou associação na função de servidor fixa sysadmin.
Usuário de banco de dados mapeado para uma chave assimétrica Associação na função de banco de dados fixa db_securityadmin, associação na função de banco de dados fixa db_owner ou associação na função de servidor fixa sysadmin.
Usuário de banco de dados não mapeado para nenhuma entidade de segurança de servidor Permissão IMPERSONATE no usuário, associação na função de banco de dados fixa db_securityadmin, associação na função de banco de dados fixa db_owner ou associação na função de servidor fixa sysadmin.
Função de banco de dados Permissão ALTER na função, associação na função de banco de dados fixa db_securityadmin, associação na função de banco de dados fixa db_owner ou associação na função de servidor fixa sysadmin.
Função de aplicativo Permissão ALTER na função, associação na função de banco de dados fixa db_securityadmin, associação na função de banco de dados fixa db_owner ou associação na função de servidor fixa sysadmin.

Os proprietários de objetos podem conceder permissões nos objetos de sua propriedade. As entidades que têm a permissão CONTROL em um protegível podem conceder a permissão nesse protegível.

Os usuários autorizados da permissão CONTROL SERVER, como os membros da função de servidor fixa sysadmin, podem conceder qualquer permissão em qualquer protegível do servidor.

Exemplos

a. Concedendo permissão para criar tabelas

O exemplo a seguir concede a permissão CREATE TABLE no banco de dados AdventureWorks ao usuário MelanieK.

USE AdventureWorks;
GRANT CREATE TABLE TO MelanieK;
GO

B. Concedendo a permissão SHOWPLAN a uma função de aplicativo

O exemplo a seguir concede a permissão SHOWPLAN no banco de dados AdventureWorks2022 à função de aplicativo AuditMonitor.

Aplica-se a: SQL Server 2008 (10.0.x) e posterior e Banco de Dados SQL

USE AdventureWorks2022;
GRANT SHOWPLAN TO AuditMonitor;
GO

C. Concedendo CREATE VIEW com GRANT OPTION

O exemplo a seguir concede a permissão CREATE VIEW no banco de dados AdventureWorks2022 ao usuário CarmineEs com o direito de conceder CREATE VIEW a outras entidades.

USE AdventureWorks2022;
GRANT CREATE VIEW TO CarmineEs WITH GRANT OPTION;
GO

D. Concedendo a permissão CONTROL a um usuário de banco de dados

O exemplo a seguir concede a permissão CONTROL no banco de dados AdventureWorks2022 ao usuário do banco de dados Sarah. O usuário deve existir no banco de dados, e o contexto deve ser definido como o banco de dados.

USE AdventureWorks2022;
GRANT CONTROL ON DATABASE::AdventureWorks2022 TO Sarah;
GO

Consulte Também