Permissões de banco de dados GRANT (Transact-SQL)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Analytics Platform System (PDW) Ponto de extremidade de análise de SQL no Microsoft Fabric Warehouse no Microsoft Fabric Banco de Dados SQL 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
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