Delen via


sys.fn_my_permissions (Transact-SQL)

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-eindpunt in Microsoft FabricWarehouse in Microsoft Fabric

Geeft een lijst terug van de rechten die effectief aan de opdrachtgever zijn verleend op een securable account. Een gerelateerde functie is HAS_PERMS_BY_NAME.

Transact-SQL syntaxis-conventies

Syntaxis

fn_my_permissions ( securable , 'securable_class' )

Arguments

securable

De naam van het beveiligbare. Als de securable de server of een database is, moet deze waarde worden ingesteld op NULL. Securable is een scalaire uitdrukking van het type sysname. Securable kan een meerledige naam zijn.

'securable_class'

De naam van de klasse van securable waarvoor de rechten worden vermeld. securable_class is sysname, met als standaard .NULL

Dit argument moet een van de volgende waarden hebben: APPLICATION ROLE, ASSEMBLY, , ASYMMETRIC KEYCERTIFICATE, CONTRACT, DATABASE, USERSERVICEXML SCHEMA COLLECTIONTYPESYMMETRIC KEYSERVERSCHEMAROUTEROLEOBJECTLOGINREMOTE SERVICE BINDINGENDPOINTFULLTEXT CATALOGMESSAGE TYPE. Een waarde van NULL is standaard .SERVER

Geretourneerde kolommen

De volgende tabel bevat de kolommen die fn_my_permissions worden geretourneerd. Elke teruggegeven rij beschrijft een toestemming die wordt gehouden door de huidige beveiligingscontext op de securable. Komt terug NULL als de query faalt.

Kolomnaam Typologie Description
entity_name sysname Naam van de securant waarop de vermelde rechten effectief worden verleend.
subentity_name sysname Kolomnaam als de securable kolommen heeft, anders NULL.
permission_name nvarchar Naam van de toestemming.

Opmerkingen

Deze tabelwaardige functie geeft een lijst terug van de effectieve rechten die door de aanroepende principal worden bezit op een gespecificeerd securabel. Een effectieve toestemming is een van de volgende opties:

  • Een toestemming die rechtstreeks aan de directeur wordt verleend, en niet wordt geweigerd.
  • Een toestemming die wordt geïmpliceerd door een hogere toestemming die door de directeur wordt gehouden en niet wordt geweigerd.
  • Een toestemming verleend aan een rol of groep waarvan de principal lid is, en niet geweigerd.
  • Een toestemming die wordt gehouden door een rol of groep waarvan de principal lid is, en niet geweigerd.

De toestemmingsevaluatie wordt altijd uitgevoerd in de beveiligingscontext van de aanroeper. Om te bepalen of een andere opdrachtgever een effectieve toestemming heeft, moet de beller toestemming hebben IMPERSONATE voor die opdrachtgever.

Voor schema-niveau entiteiten worden één-, twee- of drie-delige niet-nul namen geaccepteerd. Voor database-niveau entiteiten wordt een naam van één deel geaccepteerd, waarbij een nulwaarde de huidige database betekent. Voor de server zelf is een nulwaarde vereist (wat betekent de huidige server). fn_my_permissions Kan de rechten op een gekoppelde server niet controleren.

De volgende query geeft een lijst van ingebouwde securable klassen terug:

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

Als DEFAULT wordt geleverd als de waarde van securable of securable_class, wordt de waarde geïnterpreteerd als NULL.

De fn_my_permissions functie wordt niet ondersteund in Azure Synapse Analytics dedicated SQL-pools.

Permissions

Vereist lidmaatschap van de openbare rol.

Voorbeelden

Eén. Vermeld effectieve rechten op de server

Het volgende voorbeeld geeft een lijst van de effectieve rechten van de aanroeper op de server.

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

B. Vermeld effectieve rechten in de database

Het volgende voorbeeld geeft een lijst van de effectieve rechten van de aanroeper in de AdventureWorks2025 database.

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

C. Vermeld effectieve permissies op een weergave

Het volgende voorbeeld geeft een lijst van de effectieve rechten van de aanroeper op de vIndividualCustomer weergave in het Sales schema van de AdventureWorks2025 database.

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

D. Lijst van effectieve rechten van een andere gebruiker

Het volgende voorbeeld geeft een lijst van de effectieve rechten van databasegebruiker Wanida op de Employee tabel in het HumanResources schema van de AdventureWorks2025 database. De beller vereist IMPERSONATE toestemming voor gebruiker Wanida.

EXECUTE AS USER = 'Wanida';

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

REVERT;
GO

E. Vermeld effectieve rechten op een certificaat

Het volgende voorbeeld geeft een lijst van de effectieve rechten van de aanroeper op een certificaat dat in de huidige database wordt genoemd Shipping47 .

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

F. Lijst van effectieve rechten op een XML Schema Collection

Het volgende voorbeeld geeft een lijst van de effectieve rechten van de aanroeper op een XML Schema Collection die in de AdventureWorks2025 database is genoemdProductDescriptionSchemaCollection.

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

G. Lijst effectieve rechten op een databasegebruiker

Het volgende voorbeeld geeft een lijst van de effectieve rechten van de aanroeper op een gebruiker die in de huidige database wordt genoemd MalikAr .

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

H. Lijst van effectieve rechten voor een andere login

Het volgende voorbeeld geeft een lijst van de effectieve rechten voor SQL Server-login WanidaBenshoof op de Employee tabel in het HumanResources schema van de AdventureWorks2025 database. De aanroeper vereist IMPERSONATE toestemming voor SQL Server-login WanidaBenshoof.

EXECUTE AS LOGIN = 'WanidaBenshoof';

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

REVERT;
GO