DENY (Transact-SQL)

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsPiattaforma di strumenti analitici (PDW)Endpoint di analisi SQL in Microsoft FabricWarehouse in Microsoft Fabric

Nega un'autorizzazione a un'entità. Impedisce a tale entità di ereditare l'autorizzazione tramite l'appartenenza al ruolo o al gruppo. DENY ha la precedenza su tutte le autorizzazioni, ma non si applica ai proprietari di oggetti o ai membri del ruolo predefinito del server sysadmin. Nota sulla sicurezza: non è possibile negare le autorizzazioni ai membri del ruolo predefinito del server sysadmin e ai proprietari di oggetti.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

-- Syntax for SQL Server and Azure SQL Database  
  
-- Simplified syntax for DENY  
DENY   { ALL [ PRIVILEGES ] } 
     | <permission>  [ ( column [ ,...n ] ) ] [ ,...n ]  
    [ ON [ <class> :: ] securable ] 
    TO principal [ ,...n ]   
    [ CASCADE] [ AS principal ]  
[;]

<permission> ::=  
{ see the tables below }  
  
<class> ::=  
{ see the tables below }  
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse and Microsoft Fabric
  
DENY   
    <permission> [ ,...n ]  
    [ ON [ <class_> :: ] securable ]   
    TO principal [ ,...n ]  
    [ CASCADE ]  
[;]  
  
<permission> ::=  
{ see the tables below }  
  
<class> ::=  
{  
      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 non nega tutte le autorizzazioni possibili. Negare ALL equivale a negare le 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 DENY 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. Negare 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 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 negate le autorizzazioni. È necessario utilizzare le parentesi ().

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

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

TO principal
Nome di un'entità. Le entità alle quali possono essere negate le autorizzazioni per un'entità a protezione diretta variano in base all'entità a protezione diretta. Per le combinazioni valide, vedere gli argomenti relativi alle entità a protezione diretta elencati di seguito.

CASCADE
Indica che l'autorizzazione viene negata all'entità specificata e a tutte le entità alle quali l'entità ha concesso l'autorizzazione. Obbligatorio quando l'entità dispone dell'autorizzazione con GRANT OPTION.

AS principal
Specifica un'entità dalla quale l'entità che esegue la query ottiene il diritto di negare l'autorizzazione. Usare la clausola AS principal per indicare che l'entità registrata come l'utente che nega l'autorizzazione deve essere un'entità diversa dalla persona che esegue l'istruzione. Si supponga ad esempio che l'utente Mary sia principal_id 12 e l'utente Raul sia principal 15. Mary esegue DENY SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul; Now la tabella sys.database_permissions indicherà che il grantor_principal_id dell'istruzione deny era 15 (Raul) anche se l'istruzione è stata effettivamente eseguita dall'utente 13 (Mary).

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

Osservazioni:

La sintassi completa dell'istruzione DENY è complessa. Il diagramma della sintassi precedente è stato semplificato per evidenziarne la struttura. La sintassi completa per negare le autorizzazioni su entità a protezione diretta specifiche è descritta negli argomenti elencati di seguito.

DENY ha esito negativo se l'argomento CASCADE viene omesso quando si nega un'autorizzazione a un'entità a cui è stata concessa tale autorizzazione con l'opzione GRANT OPTION specificata.

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

In Microsoft Fabric non è possibile eseguire in modo esplicito CREATE U edizione Standard R. Quando si esegue GRANT o DENY, l'utente verrà creato automaticamente.

Attenzione

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 Verrà rimosso in una versione futura.

Attenzione

Negando l'autorizzazione CONTROL per un database viene negata implicitamente anche l'autorizzazione CONNECT per il database. Un'entità a cui viene negata l'autorizzazione CONTROL per un database non può connettersi a tale database.

Attenzione

Se si nega l'autorizzazione CONTROL SERVER, viene implicitamente negata anche l'autorizzazione CONNECT SQL per il server. Un'entità a cui viene negata l'autorizzazione CONTROL SERVER per un server non può connettersi a tale server.

Autorizzazioni

Il chiamante (o l'entità specificata con l'opzione AS) deve disporre dell'autorizzazione CONTROL per un'entità a protezione diretta o di un'autorizzazione di livello superiore che implichi l'autorizzazione CONTROL per tale entità a protezione diretta. Se si utilizza l'opzione AS, l'entità specificata deve essere proprietaria dell'entità a protezione diretta per la quale viene negata un'autorizzazione.

Gli utenti che dispongono dell'autorizzazione CONTROL SERVER, ad esempio i membri del ruolo predefinito del server sysadmin, possono negare qualsiasi autorizzazione per qualsiasi entità a protezione diretta nel server. Gli utenti che dispongono dell'autorizzazione CONTROL per il database, ad esempio i membri del ruolo predefinito del database db_owner, possono negare qualsiasi autorizzazione per ogni entità a protezione diretta nel database. Gli utenti che dispongono dell'autorizzazione CONTROL per uno schema possono negare qualsiasi autorizzazione per qualsiasi oggetto nello schema. Se si utilizza la clausola AS, l'entità specificata deve essere proprietaria dell'entità a protezione diretta per cui vengono negate le autorizzazioni.

Esempi

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

Vedi anche

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