fn_my_permissions (Transact-SQL)
Gibt eine Liste der Berechtigungen zurück, die dem Prinzipal eines sicherungsfähigen Elements effektiv gewährt wurden. Eine verwandte Funktion ist HAS_PERMS_BY_NAME (Transact-SQL).
Syntax
fn_my_permissions ( securable , 'securable_class')
Argumente
securable
Der Name des sicherungsfähigen Elements. Handelt es sich bei dem sicherungsfähigen Element um den Server oder um eine Datenbank, sollte dieser Wert auf NULL festgelegt werden. securable ist ein skalarer Ausdruck des Typs sysname. securable kann ein mehrteiliger Name sein.'securable_class'
Der Name der Klasse des sicherungsfähigen Elements, für das Berechtigungen aufgelistet sind. securable_class ist vom Datentyp sysname. Für das Argument securable_class stehen die folgenden Werte zur Verfügung: APPLICATION ROLE, ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASE, ENDPOINT, FULLTEXT CATALOG, LOGIN, MESSAGE TYPE, OBJECT, REMOTE SERVICE BINDING, ROLE, ROUTE, SCHEMA, SERVER, SERVICE, SYMMETRIC KEY, TYPE, USER, XML SCHEMA COLLECTION.
Zurückgegebene Spalten
In der folgenden Tabelle sind die Spalten aufgelistet, die fn_my_permissions zurückgibt. Jede zurückgegebene Zeile beschreibt eine Berechtigung, über die der aktuelle Sicherheitskontext für das sicherungsfähige Element verfügt. Schlägt die Abfrage fehl, wird NULL zurückgegeben.
Spaltenname |
Typ |
Beschreibung |
---|---|---|
entity_name |
sysname |
Der Name des sicherungsfähigen Elements, für das die aufgelisteten Berechtigungen effektiv gewährt wurden. |
subentity_name |
sysname |
Der Spaltenname, sofern das sicherungsfähige Element über Spalten verfügt; andernfalls NULL. |
permission_name |
nvarchar |
Der Name der Berechtigung. |
Hinweise
Diese Tabellenwertfunktion gibt eine Liste der gültigen Berechtigungen zurück, über die der aufrufende Prinzipal für ein bestimmtes sicherungsfähiges Element verfügt. Eine gültige Berechtigung ist eine der folgenden:
Eine Berechtigung, die dem Prinzipal direkt gewährt und nicht verweigert wurde.
Eine Berechtigung, die durch eine Berechtigung höherer Ebene, über die der Prinzipal verfügt und die nicht verweigert wurde, impliziert ist.
Eine Berechtigung, die einer Rolle oder Gruppe, in der der Prinzipal Mitglied ist, gewährt und nicht verweigert wurde.
Eine Berechtigung, über die eine Rolle oder Gruppe, in der der Prinzipal Mitglied ist, verfügt und die nicht verweigert wurde.
Die Berechtigungsauswertung erfolgt immer im Sicherheitskontext des Aufrufers. Um zu ermitteln, ob ein anderer Prinzipal über eine gültige Berechtigung verfügt, muss der Aufrufer über die IMPERSONATE-Berechtigung für diesen Prinzipal verfügen.
Für Entitäten auf Schemaebene werden ein-, zwei- oder dreiteilige Namen akzeptiert, die ungleich NULL sind. Für Entitäten auf Datenbankebene werden einteilige Namen akzeptiert, wobei ein NULL-Wert für "aktuelle Datenbank" steht. Für den Server selbst ist ein NULL-Wert (der für "aktueller Server" steht) erforderlich. fn_my_permissions kann die Berechtigungen für einen Verbindungsserver nicht überprüfen.
Die folgende Abfrage gibt eine Liste der integrierten Klassen für sicherungsfähige Elemente zurück:
SELECT DISTINCT class_desc FROM fn_builtin_permissions(default)
ORDER BY class_desc;
GO
Wenn DEFAULT als Wert für securable oder securable_class angegeben wird, wird der Wert als NULL interpretiert.
Beispiele
A. Auflisten der gültigen Berechtigungen auf dem Server
Das folgende Beispiel gibt eine Liste der gültigen Berechtigungen des Aufrufers auf dem Server zurück.
SELECT * FROM fn_my_permissions(NULL, 'SERVER');
GO
B. Auflisten der gültigen Berechtigungen für die Datenbank
Das folgende Beispiel gibt eine Liste der gültigen Berechtigungen des Aufrufers für die AdventureWorks-Datenbank zurück.
USE AdventureWorks;
SELECT * FROM fn_my_permissions (NULL, 'DATABASE');
GO
C. Auflisten der gültigen Berechtigungen für eine Sicht
Das folgende Beispiel gibt eine Liste der gültigen Berechtigungen des Aufrufers für die vIndividualCustomer-Sicht im Sales-Schema der AdventureWorks-Datenbank zurück.
USE AdventureWorks;
SELECT * FROM fn_my_permissions('Sales.vIndividualCustomer', 'OBJECT')
ORDER BY subentity_name, permission_name ;
GO
D. Auflisten der gültigen Berechtigungen eines anderen Benutzers
Das folgende Beispiel gibt eine Liste der gültigen Berechtigungen des Datenbankbenutzers Wanida für die Employee-Tabelle im HumanResources-Schema der AdventureWorks-Datenbank zurück. Der Aufrufer benötigt die IMPERSONATE-Berechtigung für den Benutzer Wanida.
EXECUTE AS USER = 'Wanida';
SELECT * FROM fn_my_permissions('HumanResources.Employee', 'OBJECT')
ORDER BY subentity_name, permission_name ;
REVERT;
GO
E. Auflisten der gültigen Berechtigungen für ein Zertifikat
Das folgende Beispiel gibt eine Liste der gültigen Berechtigungen des Aufrufers für ein Zertifikat namens Shipping47 in der aktuellen Datenbank zurück.
SELECT * FROM fn_my_permissions('Shipping47', 'CERTIFICATE');
GO
F. Auflisten der gültigen Berechtigungen für eine XML-Schemaauflistung
Das folgende Beispiel gibt eine Liste der gültigen Berechtigungen des Aufrufers für eine XML-Schemaauflistung namens ProductDescriptionSchemaCollection in der AdventureWorks-Datenbank zurück.
USE AdventureWorks;
SELECT * FROM fn_my_permissions('ProductDescriptionSchemaCollection',
'XML SCHEMA COLLECTION');
GO
G. Auflisten der gültigen Berechtigungen für einen Datenbankbenutzer
Das folgende Beispiel gibt eine Liste der gültigen Berechtigungen des Aufrufers für einen Benutzer namens MalikAr in der aktuellen Datenbank zurück.
SELECT * FROM fn_my_permissions('MalikAr', 'USER');
GO
D. Auflisten der gültigen Berechtigungen eines anderen Anmeldenamens
Das folgende Beispiel gibt eine Liste der gültigen Berechtigungen des SQL Server-Anmeldenamens WanidaBenshoof für die Employee-Tabelle im HumanResources-Schema der AdventureWorks-Datenbank zurück. Der Aufrufer benötigt die IMPERSONATE-Berechtigung für den SQL Server-Anmeldenamen WanidaBenshoof.
EXECUTE AS LOGIN = 'WanidaBenshoof';
SELECT * FROM fn_my_permissions('AdventureWorks.HumanResources.Employee', 'OBJECT')
ORDER BY subentity_name, permission_name ;
REVERT;
GO