REVOKE (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

Rimuove un'autorizzazione precedentemente assegnata o negata.

Convenzioni di sintassi Transact-SQL

Sintassi

-- Syntax for SQL Server and Azure SQL Database  
  
-- Simplified syntax for REVOKE  
REVOKE [ GRANT OPTION FOR ]  
      {   
        [ ALL [ PRIVILEGES ] ]  
        |  
                permission [ ( column [ ,...n ] ) ] [ ,...n ]  
      }  
      [ ON [ class :: ] securable ]   
      { TO | FROM } principal [ ,...n ]   
      [ CASCADE] [ AS principal ]  
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse and Microsoft Fabric
  
REVOKE   
    <permission> [ ,...n ]  
    [ ON [ <class_type> :: ] securable ]   
    [ FROM | TO ] principal [ ,...n ]  
    [ CASCADE ]  
[;]  
  
<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

GRANT OPTION FOR
Indica che verrà revocata la capacità di concedere l'autorizzazione specificata. Argomento obbligatorio in caso di utilizzo dell'argomento CASCADE.

Importante

Se l'autorizzazione specificata è stata concessa all'entità senza l'opzione GRANT, l'autorizzazione stessa verrà revocata.

ALL
Si applica a: SQL Server 2008 (10.0.x) e versioni successive

Questa opzione non revoca tutte le possibili autorizzazioni. La revoca di autorizzazioni tramite l'argomento ALL equivale alla revoca 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.

Nota

La sintassi REVOKE ALL è deprecata. Questa funzionalità verrà rimossa nelle versioni future di SQL Server. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. Revocare invece autorizzazioni specifiche.

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

permission
Nome di un'autorizzazione. I mapping validi delle autorizzazioni alle entità a protezione diretta vengono descritti negli argomenti riportati nella sezione Sintassi specifica delle entità a protezione diretta di seguito in questo argomento.

column
Specifica il nome di una colonna in una tabella alla quale vengono revocate le autorizzazioni. Le parentesi sono obbligatorie.

class
Specifica la classe dell'entità a protezione diretta alla quale viene revocata l'autorizzazione. Il qualificatore di ambito :: è obbligatorio.

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

TO | FROM principal
Nome di un'entità. Le entità a cui è possibile revocare le autorizzazioni per un'entità a protezione diretta variano in base all'entità a protezione diretta specifica. Per altre informazioni sulle combinazioni valide, vedere gli argomenti elencati nella sezione Sintassi specifica delle entità a protezione diretta di seguito in questo argomento.

CASCADE
Indica che l'autorizzazione revocata viene revocata anche ad altre entità alle quali è stata concessa da questa entità. Se si utilizza l'argomento CASCADE, è inoltre necessario includere l'argomento GRANT OPTION FOR.

Attenzione

La revoca propagata di un'autorizzazione concessa con WITH GRANT OPTION comporterà la revoca sia delle autorizzazioni GRANT che delle autorizzazioni DENY per tale autorizzazione.

AS principal
Usare la clausola AS principal per indicare che si sta revocando un'autorizzazione che è stata concessa da un'altra entità. Si supponga ad esempio che l'utente Mary sia principal_id 12 e l'utente Raul sia principal_id 15. Sia Mary sia Raul concedono all'utente Steven la stessa autorizzazione. La tabella sys.database_permissions indica l'autorizzazione due volte con valori grantor_principal_id diversi. Mary può revocare l'autorizzazione usando la clausola AS RAUL per rimuovere la concessione dell'autorizzazione di Raul.

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

Osservazioni:

La sintassi completa dell'istruzione REVOKE è complessa. Il diagramma della sintassi precedente è stato semplificato per evidenziarne la struttura. La sintassi completa per la revoca di autorizzazioni per entità a protezione diretta specifiche è descritta negli argomenti della sezione Sintassi specifica delle entità a protezione diretta di seguito in questo argomento.

È 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.

Attenzione

Un'istruzione DENY a livello di tabella non ha la precedenza rispetto a un'istruzione GRANT a livello di colonna. Questa incoerenza nella gerarchia delle autorizzazioni è stata mantenuta per compatibilità con le versioni precedenti. Verrà rimosso in una versione futura.

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

L'istruzione REVOKE avrà esito negativo se l'argomento CASCADE viene omesso in caso di revoca a un'entità di un'autorizzazione concessa tramite GRANT OPTION.

Autorizzazioni

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

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

Sintassi specifica dell'entità a protezione diretta

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

Entità a protezione diretta Argomento
Ruolo applicazione REVOKE - Autorizzazioni per entità di database (Transact-SQL)
Assemblaggio REVOKE - Autorizzazioni assembly (Transact-SQL)
Chiave asimmetrica REVOKE - Autorizzazioni per chiavi asimmetriche (Transact-SQL)
Gruppo di disponibilità REVOKE - Autorizzazioni del gruppo di disponibilità (Transact-SQL)
Certificate REVOKE (autorizzazioni per certificati) (Transact-SQL)
Contract REVOKE - Autorizzazioni di Service Broker (Transact-SQL)
Database REVOKE - Autorizzazioni per il database (Transact-SQL)
Endpoint REVOKE - Autorizzazioni per endpoint (Transact-SQL)
Credenziali con ambito database REVOKE - Credenziali con ambito database (Transact-SQL)
Catalogo full-text REVOKE - Autorizzazioni full-text (Transact-SQL)
Elenco di parole non significative full-text REVOKE - Autorizzazioni full-text (Transact-SQL)
Funzione REVOKE - Autorizzazioni per oggetti (Transact-SQL)
Account di accesso REVOKE - Autorizzazioni per entità server (Transact-SQL)
Tipo di messaggio REVOKE - Autorizzazioni di Service Broker (Transact-SQL)
Object REVOKE - Autorizzazioni per oggetti (Transact-SQL)
Queue REVOKE - Autorizzazioni per oggetti (Transact-SQL)
Associazione al servizio remoto REVOKE - Autorizzazioni di Service Broker (Transact-SQL)
Ruolo REVOKE - Autorizzazioni per entità di database (Transact-SQL)
Itinerario REVOKE - Autorizzazioni di Service Broker (Transact-SQL)
Schema REVOKE - Autorizzazioni dello schema (Transact-SQL)
Elenco delle proprietà di ricerca REVOKE - Autorizzazioni per l'elenco delle proprietà di ricerca (Transact-SQL)
Server REVOKE - autorizzazioni per server (Transact-SQL)
Servizio REVOKE - Autorizzazioni di Service Broker (Transact-SQL)
Stored procedure REVOKE - Autorizzazioni per oggetti (Transact-SQL)
Chiave simmetrica REVOKE - Autorizzazioni per chiavi simmetriche (Transact-SQL)
Sinonimo REVOKE - Autorizzazioni per oggetti (Transact-SQL)
Oggetti di sistema REVOKE - Autorizzazioni per oggetti di sistema (Transact-SQL)
Tabella REVOKE - Autorizzazioni per oggetti (Transact-SQL)
Type REVOKE - Autorizzazioni per i tipi (Transact-SQL)
User REVOKE - Autorizzazioni per entità di database (Transact-SQL)
Visualizza REVOKE - Autorizzazioni per oggetti (Transact-SQL)
Raccolta di XML Schema REVOKE - Autorizzazioni per la raccolta di XML Schema (Transact-SQL)

Esempi

R. Concedere e revocare

Si applica a: SQL Server, database SQL

Nell'esempio seguente viene creato uno schema, un utente del database indipendente e un nuovo ruolo in un database utente. Aggiunge l'utente al ruolo, concede l'autorizzazione SELECT allo schema al ruolo e quindi rimuove l'autorizzazione (REVOKE) per il ruolo.

CREATE SCHEMA Sales;  
GO
CREATE USER Joe without login;
GO
CREATE ROLE Vendors;
GO
ALTER ROLE Vendors ADD MEMBER Joe; 
GO
GRANT SELECT ON SCHEMA :: Sales TO Vendors;
GO
REVOKE SELECT ON SCHEMA :: Sales TO Vendors;
GO
 

Vedi anche

Gerarchia delle autorizzazioni (motore di database)
DENY (Transact-SQL)
GRANT (Transact-SQL)
sp_addlogin (Transact-SQL)
sp_adduser (Transact-SQL)
sp_changedbowner (Transact-SQL)
sp_dropuser (Transact-SQL)
sp_helprotect (Transact-SQL)
sp_helpuser (Transact-SQL)