Sdílet prostřednictvím


sys.fn_my_permissions (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)koncový bod SQL Analytics ve službě Microsoft FabricÚložiště v Microsoft Fabric

Vrátí seznam oprávnění, která byla fakticky udělena zmocnitelnému na securable. Související funkcí je HAS_PERMS_BY_NAME.

Transact-SQL konvence syntaxe

Syntaxe

fn_my_permissions ( securable , 'securable_class' )

Arguments

securable

Název zajišťovatelného. Pokud je securable server nebo databáze, tato hodnota by měla být nastavena na NULL. securable je skalární výraz typového sysname. Securable může být vícedílný název.

'securable_class'

Název třídy zabezpečených zařízení, pro která jsou uvedena oprávnění. securable_class je sysname, s výchozím nastavením NULL.

Tento argument musí být jednou z následujících hodnotAPPLICATION ROLE: , , ASSEMBLYASYMMETRIC KEY, , CERTIFICATE, . CONTRACTXML SCHEMA COLLECTIONDATABASEENDPOINTFULLTEXT CATALOGLOGINMESSAGE TYPEOBJECTREMOTE SERVICE BINDINGROLEROUTESCHEMASERVERSERVICESYMMETRIC KEYTYPEUSER Hodnota z výchozí NULL hodnoty je SERVER.

Vrácené sloupce

V následující tabulce jsou uvedeny sloupce, které fn_my_permissions se vrátí. Každý vrácený řádek popisuje oprávnění držené aktuálním bezpečnostním kontextem na securable. Pokud dotaz selže, vrátí.NULL

Název sloupce Typ Description
entity_name sysname Název zabezpečeného zařízení, na kterém jsou uvedená oprávnění efektivně udělena.
subentity_name sysname Název sloupce, pokud má sejiable sloupce, jinak NULL.
permission_name nvarchar Název povolení.

Poznámky

Tato tabulkově hodnotová funkce vrací seznam efektivních oprávnění, která volající principal drží na specifikované zajištěné zařízení. Efektivní povolení je jedna z následujících možností:

  • Povolení udělené přímo zmocniteli a nebylo zamítnuto.
  • Povolení naznačené vyšším povolením drženým zmocnitelem a nebylo zamítnuto.
  • Povolení udělené roli nebo skupině, jejímž je zmocněný členem, a není odepřeno.
  • Povolení držené rolí nebo skupinou, jejímž členem je zmocnělý subjekt, a není odepřeno.

Hodnocení oprávnění se vždy provádí v bezpečnostním kontextu volajícího. Aby bylo možné zjistit, zda má nějaký jiný zmocnitel účinné povolení, musí volající mít IMPERSONATE povolení k tomuto principálu.

Pro entity na úrovni schématu jsou přijímány jedno-, dvou- nebo třídílné ne-nulové názvy. Pro entity na úrovni databáze je přijímáno jednočlenné jméno, přičemž nulová hodnota znamená aktuální databázi. Pro samotný server je vyžadována nulová hodnota (tedy aktuální server). fn_my_permissions Nemohu zkontrolovat oprávnění na propojeném serveru.

Následující dotaz vrací seznam vestavěných securable tříd:

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

Pokud DEFAULT je uvedena jako hodnota securable nebo securable_class, hodnota se interpretuje jako NULL.

Tato fn_my_permissions funkce není podporována v dedikovaných SQL poolech Azure Synapse Analytics.

Povolení

Vyžaduje členství ve veřejné roli .

Examples

A. Seznam efektivních oprávnění na serveru

Následující příklad vrací seznam efektivních oprávnění volajícího na serveru.

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

B. Seznam efektivních oprávnění v databázi

Následující příklad vrací seznam efektivních oprávnění volajícího v databázi AdventureWorks2025 .

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

C. Seznam efektivních oprávnění k zobrazení

Následující příklad vrací seznam efektivních oprávnění volajícího na zobrazení vIndividualCustomer ve Sales schématu databáze AdventureWorks2025 .

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

D. Seznam efektivních oprávnění jiného uživatele

Následující příklad vrací seznam efektivních oprávnění uživatele Wanida databáze v tabulce Employee ve HumanResources schématu databáze AdventureWorks2025 . Volající vyžaduje IMPERSONATE oprávnění uživatele Wanida.

EXECUTE AS USER = 'Wanida';

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

REVERT;
GO

E. Uveďte efektivní oprávnění na certifikátu

Následující příklad vrací seznam efektivních oprávnění volajícího na certifikátu pojmenovaném Shipping47 v aktuální databázi.

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

F. Seznam efektivních oprávnění ke sbírce XML schématu

Následující příklad vrací seznam efektivních oprávnění volajícího na XML Schema Collection pojmenovanou ProductDescriptionSchemaCollection v databázi AdventureWorks2025 .

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

G. Seznam efektivních oprávnění u uživatele databáze

Následující příklad vrací seznam efektivních oprávnění volajícího na uživatele pojmenovaného MalikAr v aktuální databázi.

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

H. Seznam účinných oprávnění jiného přihlášení

Následující příklad vrací seznam efektivních oprávnění k přihlášení SQL Serveru WanidaBenshoof do tabulky EmployeeHumanResources ve schématu AdventureWorks2025 databáze. Volající vyžaduje IMPERSONATE oprávnění při přihlášení k SQL Serveru WanidaBenshoof.

EXECUTE AS LOGIN = 'WanidaBenshoof';

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

REVERT;
GO