DENY (Transact-SQL)

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsPiattaforma di analisi (PDW)Endpoint di analisi SQL in Microsoft FabricMagazzino in Microsoft FabricDatabase SQL 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 tutti i permessi, tranne che DENY non si applica ai proprietari degli oggetti o ai membri del ruolo di server fisso 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

Syntax

Sintassi per SQL Server, database SQL di Azure e database SQL dell'infrastruttura

 
-- 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 }  

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

DENY   
    <permission> [ ,...n ]  
    [ ON [ <class_> :: ] securable ]   
    TO principal [ ,...n ]  
    [ CASCADE ]  
[;]  
  
<permission> ::=  
{ see the tables below }  
  
<class> ::=  
{  
      LOGIN  
    | DATABASE  
    | OBJECT  
    | ROLE  
    | SCHEMA  
    | USER  
}  

Arguments

ALL
Questa opzione non nega tutte le autorizzazioni possibili. Negare ALL equivale a negare le autorizzazioni seguenti.

  • Se il securable è un database, ALL significa BACKUP, LOG, DATABASE, BACKUP, CREATE DATABASE, CREATE DEFAULTCREATE FUNCTION, , CREATE PROCEDURE, , e CREATE RULE. CREATE TABLECREATE VIEW

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

  • Se il securable è una funzione a valori di tabella, ALL significa DELETE, INSERT, REFERENCES, SELECT e UPDATE.

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

  • Se il securable è una tabella, ALL significa DELETE, INSERT, REFERENCES, SELECT e UPDATE.

  • Se il securable è una vista, ALL significa DELETE, INSERT, RIFERIMENTI, SELECT e UPDATE.

Note

La DENY sintassi 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 preside
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 il preside ha il permesso con GRANT OPTION.

AS preside
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.

Remarks

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 fallirà se CASCADE non viene specificato quando si nega un permesso a un committente a cui è stato concesso quel permesso con 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, CREATE USER attualmente non può essere eseguito esplicitamente. Quando GRANT viene eseguito o DENY viene eseguito, l'utente verrà creato automaticamente.

Caution

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.

Caution

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.

Caution

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.

Permissions

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.

Examples

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

Securables Syntax
Ruolo di applicazione DENY Permessi principali del database (Transact-SQL)
Assembly DENY Permessi di Assembly (Transact-SQL)
Chiave asimmetrica DENY Permessi di chiavi asimmetrici (Transact-SQL)
Gruppo di disponibilità DENY Permessi di Gruppo di Disponibilità (Transact-SQL)
Certificate DENY Permessi di Certificato (Transact-SQL)
Contract DENY Autorizzazioni di Service Broker (Transact-SQL)
Database DENY Permessi del database (Transact-SQL)
Credenziali con ambito database DENY Credenziale con ambito di database (Transact-SQL)
Endpoint DENY Autorizzazioni endpoint (Transact-SQL)
Full-Text Catalogo DENY Full-Text Permessi (Transact-SQL)
Full-Text Stoplist DENY Full-Text Permessi (Transact-SQL)
Function DENY Autorizzazioni per gli oggetti (Transact-SQL)
Login DENY Autorizzazioni dell'entità server (Transact-SQL)
Tipo di messaggio DENY Autorizzazioni di Service Broker (Transact-SQL)
Object DENY Autorizzazioni per gli oggetti (Transact-SQL)
Queue DENY Autorizzazioni per gli oggetti (Transact-SQL)
Associazione al servizio remoto DENY Autorizzazioni di Service Broker (Transact-SQL)
Role DENY Permessi principali del database (Transact-SQL)
Route DENY Autorizzazioni di Service Broker (Transact-SQL)
Schema DENY Permessi di schema (Transact-SQL)
Elenco delle proprietà di ricerca DENY Permessi di ricerca nella lista delle proprietà (Transact-SQL)
Server DENY Autorizzazioni server (Transact-SQL)
Service DENY Autorizzazioni di Service Broker (Transact-SQL)
Procedura memorizzata DENY Autorizzazioni per gli oggetti (Transact-SQL)
Chiave simmetrica DENY Permessi di chiavi simmetrici (Transact-SQL)
Synonym DENY Autorizzazioni per gli oggetti (Transact-SQL)
Oggetti di sistema DENY Autorizzazioni per gli oggetti di sistema (Transact-SQL)
Table DENY Autorizzazioni per gli oggetti (Transact-SQL)
Type DENY Permessi di Tipo (Transact-SQL)
User DENY Permessi principali del database (Transact-SQL)
View DENY Autorizzazioni per gli oggetti (Transact-SQL)
Raccolta di XML Schema DENY Permessi di raccolta schema XML (Transact-SQL)

Vedere 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)