GRANT-Systemobjektberechtigungen (Transact-SQL)

Gilt für:SQL ServerAzure SQL Managed Instance

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

Transact-SQL-Syntaxkonventionen

Syntax

GRANT { 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 Sie auf Katalogansichten und dynamische Verwaltungsansichten verweisen.

system_object

Gibt das Objekt an, für das die Berechtigung erteilt wird.

principal

Gibt den Prinzipal an, für den die Berechtigung erteilt wird.

Hinweise

Diese Anweisung kann verwendet werden, um Berechtigungen für bestimmte gespeicherte Prozeduren, erweiterte gespeicherte Prozeduren, Tabellenwertfunktionen, Skalare Funktionen, Ansichten, Katalogansichten, Kompatibilitätsansichten, INFORMATION_SCHEMA Ansichten, Ansichten, dynamische Verwaltungsansichten und Systemtabellen zu erteilen, die von SQL Server installiert werden. Alle Systemobjekte sind als eindeutiger Datensatz in der Ressourcendatenbank des Servers (mssqlsystemresource) vorhanden. Die Ressourcendatenbank ist schreibgeschützt. Ein Link zum Objekt wird in einem Datensatz im sys-Schema jeder Datenbank verfügbar gemacht. Die Berechtigung zum Ausführen oder Auswählen eines Systemobjekts kann erteilt, verweigert und aufgehoben werden.

Das Erteilen der Berechtigung zum Ausführen oder Auswählen eines Objekts vermittelt nicht unbedingt alle Berechtigungen, die für die Verwendung des Objekts erforderlich sind. Die meisten Objekte führen Vorgänge aus, für die zusätzliche Berechtigungen erforderlich sind. Beispielsweise kann ein Benutzer, dem sp_addlinkedserver die Berechtigung erteilt EXECUTE wurde, keinen verknüpften Server erstellen, es sei denn, der Benutzer ist auch Mitglied der festen Serverrolle "sysadmin".

Die Standardnamensauflösung löst nicht qualifizierte Prozedurnamen für die Ressourcendatenbank auf. Daher ist der Sys-Qualifizierer nur erforderlich, wenn Sie Katalogansichten und dynamische Verwaltungsansichten angeben.

Das Erteilen von Berechtigungen für Trigger und spalten von Systemobjekten wird nicht unterstützt.

Berechtigungen für Systemobjekte werden während upgrades von SQL Server beibehalten.

Sie müssen sich in der master Datenbank befinden, um Berechtigungen zu erteilen, und der Prinzipal, dem Sie die Berechtigungen erteilen, muss ein Benutzer in der master Datenbank sein. Das heißt, wenn sie Berechtigungen auf Serverebene sind, können Sie sie nicht serverprinzipalen, nur Datenbankprinzipale gewähren.

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

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

SELECT *
FROM master.sys.database_permissions AS dp
INNER 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

.A Erteilen der SELECT-Berechtigung für eine Ansicht

Im folgenden Beispiel wird dem SQL Server-Anmeldenamen Sylvester1 die Berechtigung zum Auswählen einer Sicht erteilt, in der SQL Server-Anmeldenamen aufgeführt sind. Im Beispiel wird dann die zusätzliche Berechtigung erteilt, die zum Anzeigen von Metadaten für SQL Server-Anmeldungen erforderlich ist, die der Benutzer nicht besitzt.

USE master;
GO
GRANT SELECT ON sys.sql_logins TO Sylvester1;
GRANT VIEW SERVER STATE to Sylvester1;
GO

B. Erteilen der EXECUTE-Berechtigung für eine erweiterte gespeicherte Prozedur

Im folgenden Beispiel wird EXECUTE die xp_readmail-Berechtigung für Sylvester1 erteilt.

USE master;
GO
GRANT EXECUTE ON xp_readmail TO Sylvester1;
GO