sys.fn_my_permissions (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-Endpunkt in Microsoft FabricWarehouse in Microsoft Fabric

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

Transact-SQL-Syntaxkonventionen

Syntax

fn_my_permissions ( securable , 'securable_class' )

Argumente

securable

Der Name des Sicherungsfähigen. Wenn es sich bei der Sicherungsfunktion um den Server oder eine Datenbank handelt, sollte dieser Wert auf NULL. securable ist ein Skalarausdruck vom Typ sysname. securable kann ein mehrteiliger Name sein.

'securable_class'

Der Name der Klasse der sicherungsfähigen Berechtigung, für die Berechtigungen aufgelistet sind. securable_class ist "sysname" mit einem Standardwert von NULL.

Dieses Argument muss einer der folgenden Werte sein: APPLICATION ROLE, , ASSEMBLY, , ASYMMETRIC KEY, CONTRACTCERTIFICATE, , DATABASE, , ENDPOINT, MESSAGE TYPEUSERSYMMETRIC KEYXML SCHEMA COLLECTIONTYPESERVICESERVERSCHEMAROLEOBJECTROUTEFULLTEXT CATALOGLOGINREMOTE SERVICE BINDING. Ein Wert der NULL Standardwerte für SERVER.

Zurückgegebene Spalten

In der folgenden Tabelle sind die spalten aufgeführt, die fn_my_permissions zurückgegeben werden. Jede zurückgegebene Zeile beschreibt eine Berechtigung, über die der aktuelle Sicherheitskontext für das sicherungsfähige Element verfügt. Gibt zurück NULL , wenn die Abfrage fehlschlägt.

Spaltenname type Beschreibung
entity_name sysname Der Name des sicherungsfähigen Elements, für das die aufgelisteten Berechtigungen effektiv gewährt wurden.
subentity_name sysname Spaltenname, wenn die sicherungsfähige Spalte Spalten enthält, andernfalls NULL.
permission_name nvarchar Name der Berechtigung.

Bemerkungen

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 effektive Berechtigung ist eine der folgenden Optionen:

  • Eine Berechtigung, die dem Prinzipal direkt gewährt und nicht verweigert wurde.
  • Eine Berechtigung, die durch eine Berechtigung auf höherer Ebene des Prinzipals impliziert wird und nicht verweigert wird.
  • Eine Berechtigung, die einer Rolle oder Gruppe erteilt wird, der der Prinzipal als Mitglied angehört, und nicht verweigert wird.
  • Eine Berechtigung einer Rolle oder Gruppe, der der Prinzipal als Mitglied angehört, und die nicht verweigert wird.

Die Berechtigungsauswertung erfolgt immer im Sicherheitskontext des Aufrufers. Um festzustellen, ob ein anderer Prinzipal über eine effektive Berechtigung verfügt, muss der Aufrufer über die Berechtigung für diesen Prinzipal verfügen IMPERSONATE .

Für Entitäten auf Schemaebene werden 1-, zwei- oder dreiteilige Nicht-NULL-Namen akzeptiert. Bei Entitäten auf Datenbankebene wird ein einteiliger Name akzeptiert, wobei ein NULL-Wert die aktuelle Datenbank bedeutet. Für den Server selbst ist ein Nullwert (d. h. der aktuelle Server) erforderlich. fn_my_permissions Berechtigungen auf einem verknüpften Server können nicht überprüft werden.

Die folgende Abfrage gibt eine Liste integrierter sicherungsfähiger Klassen zurück:

SELECT DISTINCT class_desc
FROM fn_builtin_permissions(DEFAULT)
ORDER BY class_desc;
GO

Wenn DEFAULT der Wert von sicherungsfähigen oder securable_class angegeben wird, wird der Wert als NULLinterpretiert.

Die fn_my_permissions Funktion wird in dedizierten SQL-Pools in Azure Synapse Analytics nicht unterstützt.

Berechtigungen

Erfordert die Mitgliedschaft in der public -Rolle.

Beispiele

.A Auflisten effektiver 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 effektiver Berechtigungen für die Datenbank

Das folgende Beispiel gibt eine Liste der gültigen Berechtigungen des Aufrufers für die AdventureWorks2022-Datenbank zurück.

USE AdventureWorks2022;
SELECT * FROM fn_my_permissions(NULL, 'DATABASE');
GO

C. Auflisten effektiver Berechtigungen für eine Ansicht

Das folgende Beispiel gibt eine Liste der gültigen Berechtigungen des Aufrufers für die vIndividualCustomer-Sicht im Sales-Schema der AdventureWorks2022-Datenbank zurück.

USE AdventureWorks2022;
GO
SELECT * FROM fn_my_permissions('Sales.vIndividualCustomer', 'OBJECT')
ORDER BY subentity_name, permission_name;
GO

D: Auflisten effektiver 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 AdventureWorks2022-Datenbank zurück. Der Aufrufer erfordert IMPERSONATE die 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 effektiver 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 effektiver Berechtigungen für eine XML-Schemaauflistung

Das folgende Beispiel gibt eine Liste der effektiven Berechtigungen des Aufrufers für eine XML-Schemaauflistung namens ProductDescriptionSchemaCollection in der AdventureWorks2022-Datenbank zurück.

USE AdventureWorks2022;
GO
SELECT * FROM fn_my_permissions(
    'ProductDescriptionSchemaCollection',
    'XML SCHEMA COLLECTION'
);
GO

G. Auflisten effektiver 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

H. Auflisten effektiver Berechtigungen für eine andere Anmeldung

Das folgende Beispiel gibt eine Liste der effektiven Berechtigungen des SQL Server-Anmeldenamens WanidaBenshoof für die Employee-Tabelle im HumanResources-Schema der AdventureWorks2022-Datenbank zurück. Der Aufrufer erfordert IMPERSONATE die Berechtigung für die SQL Server-Anmeldung WanidaBenshoof.

EXECUTE AS LOGIN = 'WanidaBenshoof';

SELECT *
FROM fn_my_permissions('AdventureWorks2022.HumanResources.Employee', 'OBJECT')
ORDER BY subentity_name, permission_name;

REVERT;
GO