Udostępnij za pomocą


sys.fn_my_permissions (Transact-SQL)

Dotyczy:programu SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)punkt końcowy analizy SQL w usłudze Microsoft FabricMagazyn w usłudze Microsoft Fabric

Zwraca listę zezwoleń faktycznie przyznanych mocodawcy na zabezpieczalnym formularzu. Powiązaną funkcją jest HAS_PERMS_BY_NAME.

Transact-SQL konwencje składni

Składnia

fn_my_permissions ( securable , 'securable_class' )

Arguments

securable

Nazwa zabezpieczalnego. Jeśli zabezpieczalnym jest serwer lub baza danych, wartość ta powinna być ustawiona na .NULL Securable to skalarne wyrażenie typu sysname. Securable może być nazwą wieloczęściową.

'securable_class'

Nazwa klasy zabezpieczalnych, dla której wymienione są uprawnienia. securable_class to nazwa systemowa, z domyślnym .NULL

Ten argument musi być jedną z następujących wartości: APPLICATION ROLE, , , ASYMMETRIC KEY, DATABASEENDPOINTCERTIFICATECONTRACT, FULLTEXT CATALOG, LOGIN, . XML SCHEMA COLLECTIONSERVICESERVERSYMMETRIC KEYTYPEMESSAGE TYPEREMOTE SERVICE BINDINGUSEROBJECTROLEROUTESCHEMAASSEMBLY Wartość domyślnie NULL wynosi SERVER.

Zwrócone kolumny

W poniższej tabeli wymieniono zwracane kolumny fn_my_permissions . Każdy zwrócony wiersz opisuje uprawnienia posiadane przez aktualny kontekst bezpieczeństwa na zabezpieczalnym (securable). Zwraca, NULL jeśli zapytanie się nie powiedzie.

Nazwa kolumny Typ Description
entity_name sysname Nazwa zabezpieczenia, na podstawie którego faktycznie udzielane są wymienione uprawnienia.
subentity_name sysname Nazwa kolumny, jeśli zabezpieczalny ma kolumny, w przeciwnym razie NULL.
permission_name nvarchar Nazwa pozwolenia.

Uwagi

Ta funkcja tabelowa zwraca listę efektywnych uprawnień posiadanych przez wywołującego głównego na określonym zabezpieczeniu. Skuteczne pozwolenie to jedna z następujących opcji:

  • Zgoda udzielona bezpośrednio zleceniodawcy i nie odmawiana.
  • Zgoda jest dorozumiana przez wyższe uprawnienia posiadane przez zleceniodawcę, a nie odmowana.
  • Zgoda udzielona roli lub grupie, której głównym jest członkiem, i nie jest odmawiana.
  • Zgoda posiadana przez rolę lub grupę, której głównym jest członkiem, i nie jest odmawiana.

Ocena uprawnień jest zawsze przeprowadzana w kontekście bezpieczeństwa dzwoniącego. Aby ustalić, czy inny podmiot ma skuteczne pozwolenie, dzwoniący musi mieć IMPERSONATE zgodę na tę zasadę.

Dla jednostek na poziomie schematu akceptowane są nazwy jednoczęściowe, dwu- lub trzyczęściowe, nie-null. Dla encji na poziomie bazy danych akceptowana jest nazwa jednoczęściowa, a wartość null oznacza aktualną bazę danych. Dla samego serwera wymagana jest wartość null (czyli aktualny serwer). fn_my_permissions Nie mogę sprawdzić uprawnień na połączonym serwerze.

Następujące zapytanie zwraca listę wbudowanych klas zabezpieczalnych:

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

Jeśli DEFAULT jest podany jako wartość securable lub securable_class, wartość interpretuje się jako NULL.

Funkcja ta fn_my_permissions nie jest obsługiwana w dedykowanych pulach SQL Azure Synapse Analytics.

Permissions

Wymaga członkostwa w publicznej roli .

Przykłady

A. Lista skutecznych uprawnień na serwerze

Poniższy przykład zwraca listę skutecznych uprawnień wywołującego na serwerze.

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

B. Lista skutecznych uprawnień w bazie danych

Poniższy przykład zwraca listę skutecznych uprawnień wywołującego w bazie AdventureWorks2025 danych.

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

C. Lista skutecznych uprawnień do widoku

Poniższy przykład zwraca listę efektywnych uprawnień wywołującego do widoku vIndividualCustomer w Sales schemacie bazy AdventureWorks2025 danych.

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

D. Lista skutecznych uprawnień innego użytkownika

Poniższy przykład zwraca listę efektywnych uprawnień użytkownika Wanida bazy danych do tabeli Employee w HumanResources schemacie bazy AdventureWorks2025 danych. Dzwoniący wymaga IMPERSONATE uprawnień użytkownika Wanida.

EXECUTE AS USER = 'Wanida';

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

REVERT;
GO

E. Lista skutecznych uprawnień na certyfikacie

Poniższy przykład zwraca listę skutecznych uprawnień wywołującego na certyfikcie nazwanym Shipping47 w aktualnej bazie danych.

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

F. Lista skutecznych uprawnień do kolekcji schematów XML

Poniższy przykład zwraca listę skutecznych uprawnień wywołującego do kolekcji ProductDescriptionSchemaCollection schematów XML nazwanej w bazie AdventureWorks2025 danych.

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

G. Lista skutecznych uprawnień użytkownika bazy danych

Poniższy przykład zwraca listę skutecznych uprawnień wywołującego do użytkownika MalikAr nazwanego w aktualnej bazie danych.

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

H. Lista skutecznych uprawnień innego logowania

Poniższy przykład zwraca listę skutecznych uprawnień do logowania WanidaBenshoof SQL Server w tabeli Employee w HumanResources schemacie bazy AdventureWorks2025 danych. Dzwoniący wymaga IMPERSONATE uprawnień do logowania WanidaBenshoofdo SQL Server.

EXECUTE AS LOGIN = 'WanidaBenshoof';

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

REVERT;
GO