Teilen über


DENY (Transact-SQL)

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL Analytics-Endpunkt in Microsoft Fabric Warehouse in Microsoft Fabric

Verweigert einem Prinzipal eine Berechtigung. Verhindert, dass der Prinzipal die Berechtigung über seine Gruppen- oder Rollenmitgliedschaften erbt. DENY hat vor allen Berechtigungen Vorrang, gilt jedoch nicht für Objektbesitzer oder Mitglieder der festen Serverrolle „sysadmin“. Sicherheitshinweis: Mitgliedern der festen Serverrolle „sysadmin“ und Objektbesitzern können keine Berechtigungen verweigert werden.

Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

ALL
Mit dieser Option werden nicht alle möglichen Berechtigungen verweigert. Das Verweigern mit der ALL-Option ist gleichbedeutend mit dem Verweigern der folgenden Berechtigungen.

  • Falls es sich beim sicherungsfähigen Element um eine Datenbank handelt, schließt ALL die Berechtigungen BACKUP DATABASE, BACKUP LOG, CREATE DATABASE, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLE und CREATE VIEW ein.

  • Falls es sich beim sicherungsfähigen Element um eine skalare Funktion handelt, schließt ALL die Berechtigungen EXECUTE und REFERENCES ein.

  • Falls es sich beim sicherungsfähigen Element um eine Tabellenwertfunktion handelt, schließt ALL die Berechtigungen DELETE, INSERT, REFERENCES, SELECT und UPDATE ein.

  • Falls es sich beim sicherungsfähigen Element um eine gespeicherte Prozedur handelt, steht ALL für EXECUTE.

  • Falls es sich beim sicherungsfähigen Element um eine Tabelle handelt, schließt ALL die Berechtigungen DELETE, INSERT, REFERENCES, SELECT und UPDATE ein.

  • Falls es sich beim sicherungsfähigen Element um eine Sicht handelt, schließt ALL die Berechtigungen DELETE, INSERT, REFERENCES, SELECT und UPDATE ein.

Hinweis

Die Syntax DENY ALL ist veraltet. Diese Funktion wird in einer zukünftigen Version von SQL Serverentfernt. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden. Verweigern Sie stattdessen einzelne Berechtigungen.

PRIVILEGES
Aus Gründen der Kompatibilität mit ISO eingeschlossen. Ändert das Verhalten von ALL nicht.

permission
Der Name einer Berechtigung. Die gültigen Zuordnungen von Berechtigungen zu sicherungsfähigen Elementen sind in den im Folgenden aufgeführten untergeordneten Themen beschrieben.

column
Gibt den Namen einer Spalte in einer Tabelle an, für die Berechtigungen verweigert werden. Die Klammern () sind erforderlich.

class
Gibt die Klasse des sicherungsfähigen Elements an, für das die Berechtigung verweigert wird. Der Bereichsqualifizierer :: ist erforderlich.

securable
Gibt das sicherungsfähige Element an, für das die Berechtigung verweigert wird.

TO principal
Der Name eines Prinzipals. Für welche Prinzipale Berechtigungen in einem sicherungsfähigen Element verweigert werden können, hängt von dem sicherungsfähigen Element ab. Gültige Kombinationen finden Sie in den weiter unten aufgeführten Themen zu sicherungsfähigen Elementen.

CASCADE
Gibt an, dass die Berechtigung für den angegebenen Prinzipal und für alle anderen Prinzipale verweigert wird, denen diese Berechtigung von diesem Prinzipal erteilt wurde. Dies ist erforderlich, wenn der Prinzipal die GRANT OPTION-Berechtigung besitzt.

AS principal
Gibt den Prinzipal an, von dem der Prinzipal, der diese Abfrage ausführt, sein Recht zum Verweigern der Berechtigung ableitet. Verwenden Sie die AS-Prinzipalklausel, um anzugeben, dass der Prinzipal, der die Berechtigung verweigert hat, ein anderer Prinzipal als die Person sein muss, die die Anweisung ausführt. Nehmen Sie beispielsweise an, dass die Benutzerin Mary der principal_id 12 und der Benutzer Raul der principal_id 15 entspricht. Mary führt DENY SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul; jetzt die tabelle sys.database_permissions aus, um anzugeben, dass die grantor_principal_id der Ablehnungsanweisung 15 (Raul) war, obwohl die Anweisung tatsächlich von Benutzer 13 (Mary) ausgeführt wurde.

In dieser Anweisung impliziert die Verwendung von AS nicht die Fähigkeit, die Identität eines anderen Benutzers anzunehmen.

Bemerkungen

Die vollständige Syntax der DENY-Anweisungen ist komplex. Das Syntaxdiagramm oben wurde vereinfacht, um die Struktur hervorzuheben. Die vollständige Syntax zum Verweigern von Berechtigungen für bestimmte sicherungsfähige Elemente ist in den weiter unten aufgeführten Themen beschrieben.

Für DENY wird ein Fehler gemeldet, falls CASCADE nicht angegeben wird, wenn einem Prinzipal eine Berechtigung verweigert wird, die zusammen mit GRANT OPTION erteilt wurde.

Die gespeicherte Systemprozedur sp_helprotect gibt Informationen zu Berechtigungen für sicherungsfähige Elemente auf Datenbankebene zurück.

In Microsoft Fabric kann CREATE USER derzeit nicht explizit ausgeführt werden. Wenn GRANT oder DENY ausgeführt wird, wird der Benutzer automatisch erstellt.

Achtung

Eine DENY-Anweisung auf Tabellenebene hat keinen Vorrang vor einer GRANT-Anweisung auf Spaltenebene. Diese Inkonsistenz in der Berechtigungshierarchie wurde aus Gründen der Abwärtskompatibilität beibehalten. Dieses Element wird in einer späteren Version entfernt.

Achtung

Durch das Verweigern der CONTROL-Berechtigung für eine Datenbank wird implizit die CONNECT-Berechtigung für die Datenbank verweigert. Ein Prinzipal, dem die CONTROL-Berechtigung für eine Datenbank verweigert wird, kann keine Verbindung mit dieser Datenbank herstellen.

Achtung

Durch das Verweigern der CONTROL SERVER-Berechtigung wird implizit die CONNECT SQL-Berechtigung für den Server verweigert. Ein Prinzipal, dem die CONTROL SERVER-Berechtigung für einen Server verweigert wird, kann keine Verbindung mit diesem Server herstellen.

Berechtigungen

Der Aufrufer (oder der mit der Option AS angegebene Prinzipal) benötigt entweder die CONTROL-Berechtigung für das sicherungsfähige Element, oder eine höhere Berechtigung, die die CONTROL-Berechtigung für das sicherungsfähige Element impliziert. Wenn Sie die Option AS verwenden, muss der angegebene Prinzipal Besitzer des sicherungsfähigen Elements sein, für das eine Berechtigung verweigert wird.

Berechtigte der CONTROL SERVER-Berechtigung, wie z. B. Mitglieder der festen Serverrolle sysadmin, können jede beliebige Berechtigung für jedes beliebige sicherungsfähige Element auf dem Server verweigern. Berechtigte der CONTROL-Berechtigung für die Datenbank, wie z. B. Mitglieder der festen Datenbankrolle db_owner, können jede beliebige Berechtigung für jedes beliebige sicherungsfähige Element in der Datenbank verweigern. Berechtigte der CONTROL-Berechtigung für ein Schema können jede beliebige Berechtigung für jedes Objekt innerhalb des Schemas verweigern. Falls die AS-Klausel verwendet wird, muss der angegebene Prinzipal der Besitzer des sicherbaren Elements sein, für das Berechtigungen verweigert werden.

Beispiele

In der folgenden Tabelle sind die sicherungsfähigen Elemente und Themen aufgeführt, in denen die für ein sicherungsfähiges Element spezifische Syntax beschrieben wird.

Sicherungsfähige Elemente Syntax
Anwendungsrolle DENY (Berechtigungen für Datenbankprinzipal) (Transact-SQL)
Assembly DENY-Assemblyberechtigungen (Transact-SQL)
Asymmetrischer Schlüssel DENY-Berechtigungen für asymmetrischen Schlüssel (Transact-SQL)
Verfügbarkeitsgruppe Verweigern von Verfügbarkeitsgruppenberechtigungen mit DENY (Transact-SQL)
Zertifikat DENY (Zertifikatberechtigungen) (Transact-SQL)
Vertrag DENY (Berechtigungen von Service Broker) (Transact-SQL)
Datenbank DENY (Datenbankberechtigungen) (Transact-SQL)
Datenbankweit gültige Anmeldeinformationen DENY (Datenbankweit gültige Anmeldeinformationen) (Transact-SQL)
Endpunkt DENY (Endpunktberechtigungen) (Transact-SQL)
Volltextkatalog DENY-Berechtigungen für Volltext (Transact-SQL)
Volltext-Stoppliste DENY-Berechtigungen für Volltext (Transact-SQL)
Funktion DENY (Objektberechtigungen) (Transact-SQL)
Anmelden DENY (Berechtigungen für Serverprinzipal) (Transact-SQL)
Nachrichtentyp DENY (Berechtigungen von Service Broker) (Transact-SQL)
Object DENY (Objektberechtigungen) (Transact-SQL)
Warteschlange DENY (Objektberechtigungen) (Transact-SQL)
Remotedienstbindung DENY (Berechtigungen von Service Broker) (Transact-SQL)
Rolle DENY (Berechtigungen für Datenbankprinzipal) (Transact-SQL)
Route DENY (Berechtigungen von Service Broker) (Transact-SQL)
Schema DENY-Schemaberechtigungen (Transact-SQL)
Sucheigenschaftenliste DENY-Sucheigenschaftenlisten-Berechtigung (Transact-SQL)
Server DENY (Serverberechtigungen) (Transact-SQL)
Dienst DENY (Berechtigungen von Service Broker) (Transact-SQL)
Gespeicherte Prozedur DENY (Objektberechtigungen) (Transact-SQL)
Symmetrischer Schlüssel DENY (Berechtigungen für symmetrische Schlüssel) (Transact-SQL)
Synonym DENY (Objektberechtigungen) (Transact-SQL)
Systemobjekte DENY (Berechtigungen für Systemobjekte) (Transact-SQL)
Tabelle DENY (Objektberechtigungen) (Transact-SQL)
type DENY (Typberechtigungen) (Transact-SQL)
Benutzer DENY (Berechtigungen für Datenbankprinzipal) (Transact-SQL)
Sicht DENY (Objektberechtigungen) (Transact-SQL)
XML-Schemasammlung DENY (Berechtigungen für XML-Schemaauflistungen) (Transact-SQL)

Weitere Informationen

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)