sys.fn_my_permissions (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL Analytics-Endpunkt in Microsoft Fabric Warehouse 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
, CONTRACT
CERTIFICATE
, , DATABASE
, , ENDPOINT
, MESSAGE TYPE
USER
SYMMETRIC KEY
XML SCHEMA COLLECTION
TYPE
SERVICE
SERVER
SCHEMA
ROLE
OBJECT
ROUTE
FULLTEXT CATALOG
LOGIN
REMOTE 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 NULL
interpretiert.
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