sys.fn_my_permissions (Transact-SQL)

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-analysslutpunkt i Microsoft FabricWarehouse i Microsoft Fabric

Returnerar en lista över de tillstånd som i praktiken beviljats huvudmannen på ett securable. En relaterad funktion är HAS_PERMS_BY_NAME.

Transact-SQL syntaxkonventioner

Syntax

fn_my_permissions ( securable , 'securable_class' )

Arguments

securable

Namnet på det värdebärga. Om den securable är servern eller en databas bör detta värde sättas till NULL. securable är ett skalärt uttryck av typen sysname. Securable kan vara ett flerpartsnamn.

'securable_class'

Namnet på den typ av securable för vilka behörigheter listas. securable_class är sysname, med standardvärdet .NULL

Detta argument måste vara ett av följande värden: APPLICATION ROLE, ASSEMBLY, , ASYMMETRIC KEYCERTIFICATE, CONTRACT, DATABASE, USERSERVICEXML SCHEMA COLLECTIONTYPESYMMETRIC KEYSERVERSCHEMAROUTEROLEOBJECTLOGINREMOTE SERVICE BINDINGENDPOINTFULLTEXT CATALOGMESSAGE TYPE. Ett värde av NULL är standard .SERVER

Kolumner som returneras

I följande tabell visas de kolumner som fn_my_permissions returneras. Varje rad som returneras beskriver en behörighet som innehas av den aktuella säkerhetskontexten på den securable. Returnerar NULL om frågan misslyckas.

Kolumnnamn Typ Description
entity_name sysname Namnet på det säkerhetsdokument där de listade behörigheterna i praktiken beviljas.
subentity_name sysname Kolumnnamn om den värdebärande har kolumner, annars NULL.
permission_name nvarchar Namnet på tillståndet.

Anmärkningar

Denna tabellvärda funktion returnerar en lista över de effektiva behörigheter som den anropande huvudpersonen har på en specificerad securable. Ett effektivt tillstånd är något av följande alternativ:

  • Ett tillstånd som ges direkt till rektorn, och inte nekas.
  • Ett tillstånd som underförstås av ett högre tillstånd som innehas av rektorn och inte nekas.
  • Ett tillstånd som ges till en roll eller grupp där huvudpersonen är medlem, och som inte nekas.
  • Ett tillstånd som innehas av en roll eller grupp där huvudmannen är medlem, och som inte nekas.

Behörighetsutvärderingen utförs alltid i säkerhetskontexten hos anroparen. För att avgöra om någon annan huvudperson har ett effektivt tillstånd måste uppringaren ha IMPERSONATE tillstånd på den huvudmannen.

För schema-nivåentiteter accepteras en-, två- eller tredelade icke-nullnamn. För databasnivåenheter accepteras ett endelsnamn, där ett nollvärde betyder den aktuella databasen. För själva servern krävs ett nollvärde (det vill säga den aktuella servern). fn_my_permissions Kan inte kontrollera behörigheter på en länkad server.

Följande fråga ger en lista över inbyggda sekurerbara klasser:

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

Om DEFAULT anges som värdet av securable eller securable_class, tolkas värdet som NULL.

Funktionen fn_my_permissions stöds inte i dedikerade SQL-pooler från Azure Synapse Analytics.

Permissions

Kräver medlemskap i offentlig roll.

Examples

A. Lista effektiva behörigheter på servern

Följande exempel ger en lista över anroparens effektiva behörigheter på servern.

SELECT * FROM fn_my_permissions(NULL, 'SERVER');
GO

B. Lista effektiva behörigheter i databasen

Följande exempel ger en lista över anroparens effektiva behörigheter i databasen AdventureWorks2025 .

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

C. Lista effektiva behörigheter i en vy

Följande exempel ger en lista över anroparens effektiva behörigheter i vIndividualCustomer vyn i Sales databasens schema AdventureWorks2025 .

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

D. Lista effektiva behörigheter för en annan användare

Följande exempel ger en lista över effektiva behörigheter för databasanvändaren Wanida i Employee tabellen i HumanResources databasens schema AdventureWorks2025 . Anroparen kräver IMPERSONATE behörighet från användaren Wanida.

EXECUTE AS USER = 'Wanida';

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

REVERT;
GO

E. Lista effektiva behörigheter på ett certifikat

Följande exempel ger en lista över anroparens effektiva behörigheter på ett certifikat som är namngivet Shipping47 i den aktuella databasen.

SELECT * FROM fn_my_permissions('Shipping47', 'CERTIFICATE');
GO

F. Lista effektiva behörigheter på en XML-schemasamling

Följande exempel ger en lista över anroparens effektiva behörigheter på en XML Schema Collection som är namngiven ProductDescriptionSchemaCollection i databasen AdventureWorks2025 .

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

G. Lista effektiva behörigheter på en databasanvändare

Följande exempel ger en lista över anroparens effektiva behörigheter på en användare som är namngiven MalikAr i den aktuella databasen.

SELECT * FROM fn_my_permissions('MalikAr', 'USER');
GO

H. Lista effektiva behörigheter för en annan inloggning

Följande exempel ger en lista över de effektiva behörigheterna för SQL Server-inloggning WanidaBenshoof i Employee tabellen i HumanResources databasens schema AdventureWorks2025 . Anroparen kräver IMPERSONATE behörighet vid SQL Server-inloggning WanidaBenshoof.

EXECUTE AS LOGIN = 'WanidaBenshoof';

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

REVERT;
GO