GRANT (Berechtigungen für Systemobjekte) (Transact-SQL)
Erteilt Berechtigungen für Systemobjekte wie z. B. gespeicherte Prozeduren, erweiterte gespeicherte Prozeduren, Funktionen und Sichten.
Syntax
GRANT { 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 erteilt wird.principal
Gibt den Prinzipal an, für den die Berechtigung erteilt 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 erteilt werden, die von SQL Server installiert wurden. Alle Systemobjekte sind als eindeutiger Datensatz in der Ressourcendatenbank des Servers (mssqlsystemresource) vorhanden. Die Ressourcendatenbank ist schreibgeschützt. Eine Verknüpfung 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.
Durch das Erteilen der Berechtigung zum Ausführen oder Auswählen eines Objekts müssen nicht alle Berechtigungen bereitgestellt werden, die zum Verwenden des Objekts erforderlich sind. Von den meisten Objekten werden Vorgänge ausgeführt, für die zusätzliche Berechtigungen erforderlich sind. Ein Benutzer, dem die EXECUTE-Berechtigung für sp_addlinkedserver erteilt wurde, kann z. B. nur dann einen Verbindungsserver erstellen, wenn der Benutzer auch ein Mitglied der festen Serverrolle sysadmin ist.
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.
Das Erteilen von Berechtigungen für Trigger und für 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
A. Erteilen der SELECT-Berechtigung für eine Sicht
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. Dann wird die zusätzliche Berechtigung erteilt, die zum Anzeigen von Metadaten für SQL Server-Anmeldenamen erforderlich ist, die sich nicht im Besitz des Benutzers befinden.
USE AdventureWorks2008R2;
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 Sylvester1 die EXECUTE-Berechtigung für xp_readmail erteilt.
GRANT EXECUTE ON xp_readmail TO Sylvester1;
GO