fn_my_permissions (Transact-SQL)

Aktualisiert: 12. Dezember 2006

Gibt eine Liste der Berechtigungen zurück, die dem Prinzipal eines sicherungsfähigen Elements effektiv gewährt wurden.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

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.

    ms176097.note(de-de,SQL.90).gifHinweis:
    Wenn Sie eine Sortierung mit Unterscheidung nach Groß-/Kleinschreibung verwenden, müssen Sie die Klasse des sicherungsfähigen Elements in Kleinbuchstaben eingeben.

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.

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.

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

Siehe auch

Verweis

Sicherheitsfunktionen (Transact-SQL)
sys.fn_builtin_permissions (Transact-SQL)
Sicherheitskatalogsichten (Transact-SQL)
EXECUTE AS (Transact-SQL)

Andere Ressourcen

Berechtigungen
Sicherungsfähige Elemente
Berechtigungshierarchie

Hilfe und Informationen

Informationsquellen für SQL Server 2005

Änderungsverlauf

Version Verlauf

12. Dezember 2006

Neuer Inhalt:
  • Es wurde ein Hinweis zur Verwendung von Kleinbuchstaben für die Eingabe von securable_class in Umgebungen, in denen Sortierungen mit Unterscheidung nach Groß-/Kleinschreibung verwendet werden, hinzugefügt.