DENY (Objektberechtigungen) (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance
Verweigert Berechtigungen für ein Element der OBJECT-Klasse sicherungsfähiger Elemente. Folgende Elemente gehören zur OBJECT-Klasse: Tabellen, Sichten, Tabellenwertfunktionen, gespeicherte Prozeduren, erweiterte gespeicherte Prozeduren, Skalarfunktionen, Aggregatfunktionen, Dienstwarteschlangen und Synonyme.
Transact-SQL-Syntaxkonventionen
Syntax
DENY <permission> [ ,...n ] ON
[ OBJECT :: ][ schema_name ]. object_name [ ( column [ ,...n ] ) ]
TO <database_principal> [ ,...n ]
[ CASCADE ]
[ AS <database_principal> ]
<permission> ::=
ALL [ PRIVILEGES ] | permission [ ( column [ ,...n ] ) ]
<database_principal> ::=
Database_user
| Database_role
| Application_role
| Database_user_mapped_to_Windows_User
| Database_user_mapped_to_Windows_Group
| Database_user_mapped_to_certificate
| Database_user_mapped_to_asymmetric_key
| Database_user_with_no_login
Argumente
permission
Gibt eine Berechtigung an, die für Objekte, die Schemas als Bereiche besitzen, verweigert werden kann. Eine Liste der Berechtigungen finden Sie im Abschnitt zu den Hinweisen weiter unten in diesem Thema.
ALL
Mit ALL werden nicht alle möglichen Berechtigungen verweigert. Das Verweigern mit ALL entspricht dem Verweigern aller ANSI-92-Berechtigungen, die für das angegebene Objekt gelten. Die Bedeutung von ALL variiert wie folgt:
- Berechtigungen für Skalarwertfunktion: EXECUTE, REFERENCES.
- Berechtigungen für Tabellenwertfunktion: DELETE, INSERT, REFERENCES, SELECT, UPDATE.
- Berechtigungen für gespeicherte Prozedur: EXECUTE.
- Tabellenberechtigungen: DELETE, INSERT, REFERENCES, SELECT, UPDATE.
- Berechtigungen anzeigen: DELETE, INSERT, REFERENCES, SELECT, UPDATE.
PRIVILEGES
Dient zur Kompatibilität mit ANSI-92. Ändert das Verhalten von ALL nicht.
column
Gibt den Namen einer Spalte in einer Tabelle, Sicht oder Tabellenwertfunktion an, für die die Berechtigung verweigert wird. Die Klammern () sind erforderlich. Für eine Spalte können nur die Berechtigungen SELECT, REFERENCES und UPDATE verweigert werden. column kann in der Berechtigungsklausel oder nach dem Namen des sicherungsfähigen Elements angegeben werden.
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. In SQL Server ist dieses Verhalten anders, wenn der Server für die Ausführung mit der Serverkonfigurationsoption „Common Criteria-Kompatibilität aktiviert“ konfiguriert ist. Diese sollte jedoch mit Umsicht eingesetzt werden, nicht als allgemeine Vorgehensweise.
ON [ OBJECT :: ] [ schema_name ] . object_name
Gibt das Objekt an, für das die Berechtigung verweigert wird. Der OBJECT-Ausdruck ist optional, wenn schema_name angegeben ist. Wenn der OBJECT-Ausdruck verwendet wird, ist der Bereichsqualifizierer ( :: ) erforderlich. Wenn schema_name nicht angegeben ist, wird das Standardschema verwendet. Wenn schema_name angegeben ist, ist der Schemabereichsqualifizierer ( . ) erforderlich.
TO <Datenbankprinzipal>
Gibt den Prinzipal an, für den die Berechtigung verweigert wird.
CASCADE
Gibt an, dass die verweigerte Berechtigung auch anderen Prinzipalen verweigert wird, denen diese Berechtigung von diesem Prinzipal erteilt wurde.
AS <Datenbankprinzipal>
Gibt einen Prinzipal an, von dem der Prinzipal, der diese Abfrage ausführt, das Recht zum Verweigern der Berechtigung ableitet.
Database_user
Gibt einen Datenbankbenutzer an.
Database_role
Gibt eine Datenbankrolle an.
Application_role
Gibt eine Anwendungsrolle an.
Database_user_mapped_to_Windows_User
Gibt einen Datenbankbenutzer an, der einem Windows-Benutzer zugeordnet ist.
Database_user_mapped_to_Windows_Group
Gibt einen Datenbankbenutzer an, der einer Windows-Gruppe zugeordnet ist.
Database_user_mapped_to_certificate
Gibt einen Datenbankbenutzer an, der einem Zertifikat zugeordnet ist.
Database_user_mapped_to_asymmetric_key
Gibt einen Datenbankbenutzer an, der einem asymmetrischen Schlüssel zugeordnet ist.
Database_user_with_no_login
Gibt einen Datenbankbenutzer ohne entsprechenden Prinzipal auf Serverebene an.
Bemerkungen
Informationen zu Objekten werden in unterschiedlichen Katalogsichten angezeigt. Weitere Informationen finden Sie unter Katalogsichten für Objekte (Transact-SQL).
Ein Objekt ist ein sicherungsfähiges Element auf Schemaebene in dem Schema, das das übergeordnete Element in der Berechtigungshierarchie ist. Die spezifischsten und restriktivsten Berechtigungen, die für ein Objekt verweigert werden können, sind unten aufgeführt. Auch die allgemeineren Berechtigungen sind aufgeführt, die diese implizit enthalten.
Objektberechtigung | Impliziert durch die Objektberechtigung | Impliziert durch die Schemaberechtigung |
---|---|---|
ALTER | CONTROL | ALTER |
CONTROL | CONTROL | CONTROL |
Delete | CONTROL | Delete |
Führen Sie | CONTROL | Führen Sie |
INSERT | CONTROL | INSERT |
RECEIVE | CONTROL | CONTROL |
REFERENCES | CONTROL | REFERENCES |
SELECT | RECEIVE | SELECT |
TAKE OWNERSHIP | CONTROL | CONTROL |
UPDATE | CONTROL | UPDATE |
VIEW CHANGE TRACKING | CONTROL | VIEW CHANGE TRACKING |
VIEW DEFINITION | CONTROL | VIEW DEFINITION |
Berechtigungen
Erfordert die CONTROL-Berechtigung für das Objekt.
Falls die AS-Klausel verwendet wird, muss der angegebene Prinzipal der Besitzer des Objekts sein, für das Berechtigungen verweigert werden.
Beispiele
In den folgenden Beispielen wird die Datenbank AdventureWorks verwendet.
A. Verweigern der SELECT-Berechtigung für eine Tabelle
Im folgenden Beispiel wird die Berechtigung SELECT
für den Benutzer RosaQdM
für die Tabelle Person.Address
verweigert.
DENY SELECT ON OBJECT::Person.Address TO RosaQdM;
GO
B. Verweigern der EXECUTE-Berechtigung für eine gespeicherte Prozedur
Im folgenden Beispiel wird die EXECUTE
-Berechtigung für die gespeicherte Prozedur HumanResources.uspUpdateEmployeeHireInfo
für die Anwendungsrolle Recruiting11
verweigert.
DENY EXECUTE ON OBJECT::HumanResources.uspUpdateEmployeeHireInfo
TO Recruiting11;
GO
C. Verweigern der REFERENCES-Berechtigung für eine Sicht mit CASCADE
Im folgenden Beispiel wird die REFERENCES
-Berechtigung für die BusinessEntityID
-Spalte in der HumanResources.vEmployee
-Sicht für den Benutzer Wanida
mit CASCADE
verweigert.
DENY REFERENCES (BusinessEntityID) ON OBJECT::HumanResources.vEmployee
TO Wanida CASCADE;
GO
Weitere Informationen
GRANT (Objektberechtigungen) (Transact-SQL)
REVOKE-Objektberechtigungen (Transact-SQL)
Katalogsichten für Objekte (Transact-SQL)
Berechtigungen (Datenbank-Engine)
Prinzipale (Datenbank-Engine)
Sicherungsfähige Elemente
sys.fn_builtin_permissions (Transact-SQL)
HAS_PERMS_BY_NAME (Transact-SQL)
sys.fn_my_permissions (Transact-SQL)