DENY (Berechtigungen für Systemobjekte) (Transact-SQL)

Verweigert Berechtigungen für Systemobjekte wie z. B. gespeicherte Prozeduren, erweiterte gespeicherte Prozeduren, Funktionen und Sichten.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

DENY { SELECT | EXECUTE } ON [ sys.]system_object TO principal 

Argumente

  • [ sys.]
    Der sys-Qualifizierer ist nur erforderlich, wenn auf Katalogsichten und dynamische Verwaltungssichten verwiesen wird.

  • system_object
    Gibt das Objekt an, für das die Berechtigung verweigert wird.

  • principal
    Gibt den Prinzipal an, für den die Berechtigung aufgehoben wird.

Hinweise

Mit dieser Anweisung können Berechtigungen für bestimmte gespeicherte Prozeduren, erweiterte gespeicherte Prozeduren, Tabellenwertfunktionen, Skalarfunktionen, Sichten, Katalogsichten, Kompatibilitätssichten, INFORMATION_SCHEMA-Sichten, dynamische Verwaltungssichten und Systemtabellen verweigert werden, die von SQL Server installiert wurden. Alle Systemobjekte sind als eindeutiger Datensatz in der Ressourcendatenbank (mssqlsystemresource) vorhanden. Die Ressourcendatenbank ist schreibgeschützt. Ein Link zum Objekt wird in einem Datensatz im sys-Schema jeder Datenbank verfügbar gemacht.

Die Standardnamensauflösung löst nicht qualifizierte Prozedurnamen für die Ressourcendatenbank auf. Daher ist der sys-Qualifizierer nur erforderlich, wenn Katalogsichten und dynamische Verwaltungssichten angegeben werden.

VorsichtshinweisVorsicht

Wenn Berechtigungen für Systemobjekte verweigert werden, erzeugen Anwendungen, die von diesen Systemobjekten abhängig sind, einen Fehler. Wenn die Standardberechtigungen in Katalogsichten geändert werden, kann SQL Server Management Studio, das Katalogsichten verwendet, ggf. nicht wie erwartet ausgeführt werden.

Das Verweigern von Berechtigungen für Trigger und in Spalten von Systemobjekten wird nicht unterstützt.

Berechtigungen für Systemobjekte werden bei Updates von SQL Server beibehalten.

Systemobjekte werden in der sys.system_objects-Katalogsicht sichtbar. Die Berechtigungen für Systemobjekte werden in der sys.database_permissions-Katalogsicht in der master-Datenbank angezeigt.

Die folgende Abfrage gibt Informationen zu Berechtigungen für Systemobjekte zurück:

SELECT * FROM master.sys.database_permissions AS dp 
    JOIN sys.system_objects AS so
    ON dp.major_id = so.object_id
    WHERE dp.class = 1 AND so.parent_object_id = 0 ;
GO

Berechtigungen

Erfordert die CONTROL SERVER-Berechtigung.

Beispiele

Im folgenden Beispiel wird die EXECUTE-Berechtigung für xp_cmdshell für die public-Rolle verweigert.

DENY EXECUTE ON sys.xp_cmdshell TO public;
GO