GRANT (Transact-SQL)

Si applica a:SQL Server database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics AnalyticsPlatform System (PDW)SQL analytics endpoint in Microsoft FabricWarehouse in Microsoft Fabric

Concede a un'entità autorizzazioni per un'entità a protezione diretta. Il concetto generale è .GRANT <some permission> ON <some object> TO <some user, login, or group> Per una descrizione generale delle autorizzazioni, vedere Autorizzazioni (motore di database).

Convenzioni di sintassi Transact-SQL

Sintassi

Sintassi per SQL Server e database SQL di Azure.

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

Sintassi per Azure Synapse Analytics e Parallel Data Warehouse e Microsoft Fabric.

GRANT
    <permission> [ , ...n ]
    [ ON [ <class_type> :: ] securable ]
    TO principal [ , ...n ]
    [ WITH GRANT OPTION ]
[;]

<permission> ::=
{ see the tables below }

<class_type> ::=
{
      LOGIN
    | DATABASE
    | OBJECT
    | ROLE
    | SCHEMA
    | USER
}

Nota

Per visualizzare la sintassi Transact-SQL per SQL Server 2014 (12.x) e versioni precedenti, vedere la documentazione delle versioni precedenti.

Argomenti

ALL

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

Entità a protezione diretta Autorizzazioni
Database BACKUP DATABASE, BACKUP LOG, , CREATE DEFAULTCREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, , CREATE TABLEe CREATE DATABASECREATE VIEW
Funzioni scalari EXECUTE e REFERENCES
Funzione con valori di tabella DELETE, INSERT, REFERENCES, SELECT e UPDATE
Stored procedure EXECUTE
Tabella DELETE, INSERT, REFERENCES, SELECT e UPDATE
Visualizza DELETE, INSERT, REFERENCES, SELECT e UPDATE

PRIVILEGES

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

permission

Nome di un'autorizzazione. I mapping validi delle autorizzazioni per le entità a protezione diretta sono descritti nelle sezioni seguenti.

column

Specifica il nome di una colonna in una tabella per la quale vengono concesse autorizzazioni. Le parentesi ( e ) 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 le combinazioni valide, vedere le sezioni seguenti.

GRANT OPTION

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

AS principal

Usare la AS <principal> clausola per indicare che l'entità registrata come grantor dell'autorizzazione deve essere un'entità diversa dalla persona che esegue l'istruzione. Si supponga, ad esempio, che l'utente disponga di un oggetto e 12che l'utente MaryRaul sia principale15.principal_id Mary esegue GRANT SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul; Now la sys.database_permissions tabella indica che grantor_prinicpal_id era 15 (Raul) anche se l'istruzione è stata effettivamente eseguita dall'utente 12 (Mary).

L'uso della AS clausola non è in genere consigliato a meno che non sia necessario definire in modo esplicito la catena di autorizzazioni. Per altre informazioni, vedere Riepilogo dell'algoritmo di controllo delle autorizzazioni.

L'uso di AS in questa istruzione non implica la possibilità di rappresentare un altro utente.

Osservazioni:

La sintassi completa dell'istruzione GRANT è complessa. Il diagramma della sintassi precedente è stato semplificato per attirare l'attenzione sulla struttura. La sintassi completa per concedere le autorizzazioni per entità a protezione diretta specifiche è descritta negli articoli elencati più avanti in questo articolo.

L'istruzione REVOKE può essere usata per rimuovere le autorizzazioni concesse e l'istruzione può essere usata per impedire a un'entità DENY di ottenere un'autorizzazione specifica tramite un oggetto GRANT.

La concessione di un'autorizzazione rimuove DENY o REVOKE di tale autorizzazione per l'entità a protezione diretta specificata. Se la stessa autorizzazione viene negata in un ambito superiore che contiene l'entità a protezione diretta, ha la DENY 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.

Attenzione

Un livello DENY di tabella non ha la precedenza su un livello GRANTdi colonna. Questa incongruenza nella gerarchia di autorizzazioni è stata mantenuta per garantire la compatibilità con le versioni precedenti Verrà rimosso in una versione futura.

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

In Microsoft Fabric CREATE USER non è possibile eseguire in modo esplicito attualmente. Quando GRANT o DENY viene eseguito, l'utente viene creato automaticamente.

WITH GRANT OPTION

GRANT ... WITH GRANT OPTION Specifica che all'entità di sicurezza che riceve l'autorizzazione viene concessa 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, la AS clausola deve essere usata quando l'autorizzazione dell'oggetto deve essere concessa ulteriormente agli utenti che non sono membri del gruppo o del ruolo. Poiché solo un utente, anziché un gruppo o un ruolo, può eseguire un'istruzione GRANT , un membro specifico del gruppo o del ruolo deve usare la AS clausola per richiamare in modo esplicito l'appartenenza al ruolo o al gruppo quando si concede l'autorizzazione. Nell'esempio seguente viene illustrato come viene usato quando WITH GRANT OPTION viene concesso a un ruolo o a 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 TestProc TO User2;

-- The following succeeds because User1 invokes the TesterRole membership
GRANT EXECUTE ON TestProc TO User2 AS TesterRole;

Grafico delle autorizzazioni di SQL Server

Per un grafico con dimensioni poster di tutte le autorizzazioni di motore di database in formato PDF, vedere https://aka.ms/sql-permissions-poster.

Autorizzazioni

L'utente autorizzato (o l'entità specificata con l'opzione AS ) deve avere l'autorizzazione stessa con GRANT OPTIONo un'autorizzazione superiore che implica l'autorizzazione concessa. Se si usa l'opzione AS , si applicano requisiti aggiuntivi. Per altre informazioni dettagliate, vedere l'articolo relativo alle entità a protezione diretta.

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

Gli utenti autorizzati 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 autorizzati 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 protezione diretta nel database. Gli utenti autorizzati dell'autorizzazione CONTROL per uno schema possono concedere qualsiasi autorizzazione per qualsiasi oggetto all'interno dello schema.

Esempi

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

Entità a protezione diretta Sintassi GRANT
Ruolo applicazione GRANT - Autorizzazioni per entità di database (Transact-SQL)
Assemblaggio GRANT - Autorizzazioni per assembly (Transact-SQL)
Chiave asimmetrica GRANT - Autorizzazioni per chiavi asimmetriche (Transact-SQL)
Gruppo di disponibilità GRANT - Autorizzazioni del gruppo di disponibilità (Transact-SQL)
Certificate GRANT - Autorizzazioni per i certificati (Transact-SQL)
Contract GRANT - Autorizzazioni di Service Broker (Transact-SQL)
Database GRANT - Autorizzazioni per il database (Transact-SQL)
Credenziali con ambito database GRANT - Credenziali con ambito database (Transact-SQL)
Endpoint GRANT - Autorizzazioni per endpoint (Transact-SQL)
Catalogo full-text GRANT - Autorizzazioni full-text (Transact-SQL)
Elenco di parole non significative full-text GRANT - Autorizzazioni 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 di Service Broker (Transact-SQL)
Object GRANT - autorizzazioni per oggetti (Transact-SQL)
Queue GRANT - autorizzazioni per oggetti (Transact-SQL)
Associazione al servizio remoto GRANT - Autorizzazioni di Service Broker (Transact-SQL)
Role GRANT - Autorizzazioni per entità di database (Transact-SQL)
Itinerario GRANT - Autorizzazioni di Service Broker (Transact-SQL)
Schema GRANT - Autorizzazioni dello schema (Transact-SQL)
Elenco delle proprietà di ricerca GRANT - Autorizzazioni per l'elenco delle proprietà di ricerca (Transact-SQL)
Server GRANT - autorizzazioni per server (Transact-SQL)
Service GRANT - Autorizzazioni di 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)
Type GRANT - Autorizzazioni per i tipi (Transact-SQL)
User GRANT - Autorizzazioni per entità di database (Transact-SQL)
Visualizza GRANT - autorizzazioni per oggetti (Transact-SQL)
Raccolta di XML Schema GRANT XML Schema Collection Permissions (Transact-SQL)