GRANT (Transact-SQL)

Concede a un'entità autorizzazioni per un'entità a protezione diretta. Il concetto generale è di GRANT <un'autorizzazione> ON <un oggetto> TO <un utente, account di accesso o gruppo>. Per una discussione generale sulle autorizzazioni, vedere Autorizzazioni (Motore di database).

Icona di collegamento a un argomento Convenzioni della sintassi Transact-SQL


Simplified syntax for GRANT
GRANT { ALL [ PRIVILEGES ] }
      | permission [ ( column [ ,...n ] ) ] [ ,...n ]
      [ ON [ class :: ] securable ] TO principal [ ,...n ] 
      [ WITH GRANT OPTION ] [ AS principal ]

ALL

Questa opzione è deprecata ed è stata mantenuta solo a scopo di compatibilità con le versioni precedenti. Non concede tutte le possibili autorizzazioni. La concessione di autorizzazioni tramite l'argomento ALL equivale alla concessione delle autorizzazioni seguenti.

  • Se l'entità a protezione diretta è un database, ALL corrisponde a BACKUP DATABASE, BACKUP LOG, CREATE DATABASE, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLE e CREATE VIEW.

  • Se l'entità a protezione diretta è una funzione scalare, ALL corrisponde a EXECUTE e REFERENCES.

  • Se l'entità a protezione diretta è una funzione con valori di tabella, ALL corrisponde a DELETE, INSERT, REFERENCES, SELECT e UPDATE.

  • Se l'entità a protezione diretta è una stored procedure, ALL corrisponde a EXECUTE.

  • Se l'entità a protezione diretta è una tabella, ALL corrisponde a DELETE, INSERT, REFERENCES, SELECT e UPDATE.

  • Se l'entità a protezione diretta è una vista, ALL corrisponde a DELETE, INSERT, REFERENCES, SELECT e UPDATE.

PRIVILEGES

Opzione inclusa per compatibilità con lo standard ISO. Non modifica il funzionamento di ALL.

permission

Nome di un'autorizzazione. I mapping validi tra le autorizzazioni e le entità a protezione diretta sono descritti negli argomenti correlati elencati di seguito.

column

Specifica il nome di una colonna in una tabella per la quale vengono concesse autorizzazioni. Le parentesi "()" sono obbligatorie.

class

Specifica la classe dell'entità a protezione diretta per la quale viene concessa l'autorizzazione. Il qualificatore di ambito "::" è obbligatorio.

securable

Specifica l'entità a protezione diretta a cui viene concessa l'autorizzazione.

TO principal

Nome di un'entità. Le entità a cui è possibile concedere le autorizzazioni per un'entità a protezione diretta variano in base all'entità a protezione diretta specifica. Per ulteriori informazioni sulle combinazioni valide, vedere gli argomenti secondari elencati di seguito.

GRANT OPTION

Indica che l'utente autorizzato potrà inoltre concedere l'autorizzazione specificata ad altre entità.

AS principal

Specifica un'entità dalla quale l'entità che esegue la query ottiene il diritto di concedere l'autorizzazione.

La sintassi completa dell'istruzione GRANT è complessa. Nel diagramma precedente è stata semplificata per evidenziarne la struttura. La sintassi completa per la concessioni di autorizzazioni per entità a protezione diretta specifiche viene descritta negli argomenti riportati di seguito.

È possibile utilizzare l'istruzione REVOKE per rimuovere le autorizzazioni concesse e l'istruzione DENY per negare un'autorizzazione specifica a un'entità anche in caso di esecuzione di un'istruzione GRANT.

La concessione di un'autorizzazione rimuove l'istruzione DENY o REVOKE di tale autorizzazione per l'entità a protezione diretta specificata. Se la stessa autorizzazione viene negata a un livello superiore e in tale livello è inclusa l'entità a protezione diretta, l'istruzione DENY ha la precedenza. Tuttavia, la revoca dell'autorizzazione concessa a un ambito superiore non ha la precedenza.

Le autorizzazioni a livello di database vengono concesse nell'ambito del database specificato. Se un utente deve ottenere autorizzazioni per gli oggetti di un database diverso da quello corrente, è necessario creare un account utente nel secondo database o consentire all'account utente di accedere a tale database oltre che al database corrente.

Nota di attenzioneAttenzione

Un'istruzione DENY a livello di tabella non ha la precedenza rispetto a un'istruzione GRANT a livello di colonna. Questa incongruenza nella gerarchia di autorizzazioni è stata mantenuta per garantire la compatibilità con le versioni precedenti e verrà rimossa in una versione futura.

La stored procedure di sistema sp_helprotect restituisce le autorizzazioni per un'entità a protezione diretta a livello di database.

GRANTWITH GRANT OPTION specifica che l'entità di sicurezza che riceve l'autorizzazione ha la possibilità di concedere l'autorizzazione specificata ad altri account di sicurezza. Quando l'entità che riceve l'autorizzazione è un ruolo o un gruppo di Windows, è necessario utilizzare la clausola AS quando l'autorizzazione dell'oggetto deve essere estesa a utenti che non sono membri del gruppo o del ruolo. Poiché un'istruzione GRANT può essere eseguita solo da un utente, anziché da un gruppo o un ruolo, è necessario che la clausola AS venga utilizzata da un ruolo o un membro del gruppo specifico per richiamare in modo esplicito l'appartenenza al ruolo o al gruppo quando viene concessa l'autorizzazione. Nell'esempio riportato di seguito viene illustrato l'utilizzo di WITH GRANT OPTION quando viene concessa a un ruolo o un gruppo di Windows.

-- Execute the following as a database owner
GRANT EXECUTE ON TestProc TO TesterRole WITH GRANT OPTION
EXEC sp_addrolemember TesterRole, User1;
-- Execute the following as User1
-- The following fails because User1 does not have the permission as the User1
GRANT EXECUTE ON TestMe TO User2;
-- The following succeeds because User1 invokes the TesterRole membership
GRANT EXECUTE ON TestMe TO User2 AS TesterRole;

Per un grafico con dimensioni da poster di tutte le autorizzazioni del Motore di database in formato pdf, vedere http://go.microsoft.com/fwlink/?LinkId=229142.

L'utente che concede le autorizzazioni (o l'entità specificata con l'opzione AS) deve disporre della relativa autorizzazione con GRANT OPTION oppure di un'autorizzazione di livello superiore che include l'autorizzazione che viene concessa. Se si utilizza l'opzione AS, sono previsti requisiti aggiuntivi. Per ulteriori informazioni, vedere l'argomento relativo alle entità a protezione diretta.

I proprietari degli oggetti possono concedere autorizzazioni per gli oggetti di cui sono proprietari. Le entità con l'autorizzazione CONTROL per un'entità a sicurezza diretta possono concedere l'autorizzazione per quella entità.

Gli utenti che dispongono dell'autorizzazione CONTROL SERVER, ad esempio i membri del ruolo predefinito del server sysadmin, possono concedere qualsiasi autorizzazione per qualsiasi entità a protezione diretta nel server. Gli utenti che dispongono dell'autorizzazione CONTROL per un database, ad esempio i membri del ruolo predefinito del database db_owner, possono concedere qualsiasi autorizzazione per qualsiasi entità a sicurezza diretta nel database. Gli utenti che dispongono dell'autorizzazione CONTROL in uno schema, possono concedere qualsiasi autorizzazione per qualsiasi oggetto all'interno dello schema.

Nella tabella seguente vengono elencate le entità a protezione diretta e gli argomenti in cui viene descritta la relativa sintassi specifica.

Ruolo applicazione

GRANT - autorizzazioni per entità di database (Transact-SQL)

Assembly

GRANT - autorizzazioni per assembly (Transact-SQL)

Chiave asimmetrica

GRANT (autorizzazioni per chiavi asimmetriche) (Transact-SQL)

Certificato

GRANT (autorizzazioni per certificati) (Transact-SQL)

Contratto

GRANT - autorizzazioni per Service Broker (Transact-SQL)

Database

GRANT - autorizzazioni per database (Transact-SQL)

Endpoint

GRANT - autorizzazioni per endpoint (Transact-SQL)

Catalogo full-text

GRANT - autorizzazioni per il catalogo full-text (Transact-SQL)

Elenco di parole non significative full-text

GRANT - autorizzazioni per il catalogo full-text (Transact-SQL)

Funzione

GRANT - autorizzazioni per oggetti (Transact-SQL)

Account di accesso

GRANT - autorizzazioni per entità server (Transact-SQL)

Tipo di messaggio

GRANT - autorizzazioni per Service Broker (Transact-SQL)

Oggetto

GRANT - autorizzazioni per oggetti (Transact-SQL)

Coda

GRANT - autorizzazioni per oggetti (Transact-SQL)

Associazione al servizio remoto

GRANT - autorizzazioni per Service Broker (Transact-SQL)

Ruolo

GRANT - autorizzazioni per entità di database (Transact-SQL)

Route

GRANT - autorizzazioni per Service Broker (Transact-SQL)

Schema

GRANT (autorizzazioni per schemi) (Transact-SQL)

Server

GRANT - autorizzazioni per server (Transact-SQL)

Servizio

GRANT - autorizzazioni per Service Broker (Transact-SQL)

Stored procedure

GRANT - autorizzazioni per oggetti (Transact-SQL)

Chiave simmetrica

GRANT - autorizzazioni per chiavi simmetriche (Transact-SQL)

Sinonimo

GRANT - autorizzazioni per oggetti (Transact-SQL)

Oggetti di sistema

GRANT - autorizzazioni per oggetti di sistema (Transact-SQL)

Tabella

GRANT - autorizzazioni per oggetti (Transact-SQL)

Tipo

GRANT - autorizzazioni per tipi (Transact-SQL)

Utente

GRANT - autorizzazioni per entità di database (Transact-SQL)

Vista

GRANT - autorizzazioni per oggetti (Transact-SQL)

Raccolta di XML Schema

GRANT - autorizzazioni per raccolte di XML Schema (Transact-SQL)

Aggiunte alla community

AGGIUNGI
Mostra: