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

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

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

Transact-SQL-Syntaxkonventionen

Syntax

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

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

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.

Bemerkungen

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. Jedes Systemobjekt ist 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.

Achtung

Durch Verweigern von Berechtigungen für Systemobjekte werden Fehler in abhängigen Anwendungen verursacht. SQL Server Management Studio verwendet Katalogsichten und funktioniert möglicherweise nicht wie erwartet, wenn Sie die Standardberechtigungen für Katalogsichten ändern.

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

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

Systemobjekte werden in der sys.system_objects -Katalogsicht angezeigt. 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  

Weitere Informationen

Transact-SQL-Syntaxkonventionen
sys.database_permissions (Transact-SQL)
GRANT (Berechtigungen für Systemobjekte) (Transact-SQL)
REVOKE (Berechtigungen für Systemobjekte) (Transact-SQL)