sys.fn_my_permissions (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Point de terminaison analytique SQL dans Microsoft FabricEntrepôt dans Microsoft Fabric

Renvoie la liste des autorisations accordées effectivement au principal sur un élément sécurisable. Une fonction associée est HAS_PERMS_BY_NAME.

Conventions de la syntaxe Transact-SQL

Syntaxe

fn_my_permissions ( securable , 'securable_class' )

Arguments

securable

Nom de l’élément sécurisable. Si l’élément sécurisable est le serveur ou une base de données, cette valeur doit être définie NULLsur . securable est une expression scalaire de type sysname. securable peut être un nom en plusieurs parties.

securable_class

Nom de la classe sécurisable pour laquelle les autorisations sont répertoriées. securable_class est sysname, avec la valeur par défaut NULL.

Cet argument doit être l’une des valeurs suivantes : APPLICATION ROLE, ASYMMETRIC KEYCONTRACTCERTIFICATEDATABASEENDPOINTASSEMBLY, , FULLTEXT CATALOG, OBJECTREMOTE SERVICE BINDINGLOGINMESSAGE TYPEROLE, ROUTE, SCHEMA, , SERVICEXML SCHEMA COLLECTIONSERVERSYMMETRIC KEYTYPEUSER, . NULL Valeur par défaut SERVER.

Colonnes retournées

Le tableau suivant répertorie les colonnes qui retournent fn_my_permissions . Chaque ligne renvoyée décrit une autorisation détenue par le contexte de sécurité actuel sur l'élément sécurisable. Retourne NULL si la requête échoue.

Nom de la colonne Type Description
entity_name sysname Nom de l'élément sécurisable pour lequel les autorisations affichées sont effectivement accordées.
subentity_name sysname Nom de colonne si l’élément sécurisable comporte des colonnes ; sinon NULL.
permission_name nvarchar Nom de l’autorisation.

Notes

Cette fonction table renvoie la liste des autorisations effectives détenues par le principal appelant sur un élément sécurisable spécifié. Une autorisation effective est l’une des options suivantes :

  • une autorisation accordée directement au principal et non refusée ;
  • une autorisation impliquée par une autorisation de niveau supérieur détenue par le principal et non refusée ;
  • une autorisation accordée à un rôle ou à un groupe dont le principal est membre et non refusé ;
  • une autorisation détenue par un rôle ou un groupe dont le principal est membre et non refusé.

L'évaluation des autorisations a toujours lieu dans le contexte de sécurité de l'appelant. Pour déterminer si un autre principal dispose d’une autorisation effective, l’appelant doit avoir IMPERSONATE l’autorisation sur ce principal.

Pour les entités au niveau du schéma, les noms non null en un, deux ou trois parties sont acceptés. Pour les entités au niveau de la base de données, un nom en une seule partie est accepté, avec une valeur null qui signifie que la base de données active. Pour le serveur lui-même, une valeur Null (ce qui signifie que le serveur actuel) est requise. fn_my_permissionsne peut pas case activée autorisations sur un serveur lié.

La requête suivante retourne une liste de classes sécurisables intégrées :

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

Si DEFAULT elle est fournie comme valeur sécurisable ou securable_class, la valeur est interprétée comme NULL.

La fn_my_permissions fonction n’est pas prise en charge dans les pools SQL dédiés Azure Synapse Analytics.

Autorisations

Nécessite l'appartenance au rôle public .

Exemples

R. Répertorier les autorisations effectives sur le serveur

L'exemple suivant renvoie la liste des autorisations effectives détenues par l'appelant sur le serveur.

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

B. Répertorier les autorisations effectives sur la base de données

L'exemple suivant renvoie la liste des autorisations effectives détenues par l'appelant sur la base de données AdventureWorks2022.

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

C. Répertorier les autorisations effectives sur une vue

L'exemple suivant renvoie la liste des autorisations effectives détenues par l'appelant sur la vue vIndividualCustomer du schéma Sales dans la base de données AdventureWorks2022.

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

D. Répertorier les autorisations effectives d’un autre utilisateur

L'exemple suivant renvoie la liste des autorisations effectives détenues par l'utilisateur de base de données Wanida sur la table Employee du schéma HumanResources dans la base de données AdventureWorks2022. L’appelant requiert IMPERSONATE une autorisation sur l’utilisateur Wanida.

EXECUTE AS USER = 'Wanida';

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

REVERT;
GO

E. Répertorier les autorisations effectives sur un certificat

L'exemple suivant renvoie la liste des autorisations effectives détenues par l'appelant sur un certificat nommé Shipping47 dans la base de données active.

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

F. Répertorier les autorisations effectives sur une collection de schémas XML

L’exemple suivant renvoie la liste des autorisations effectives détenues par l’appelant sur une collection de schémas XML nommée ProductDescriptionSchemaCollection dans la base de données AdventureWorks2022.

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

G. Répertorier les autorisations effectives sur un utilisateur de base de données

L'exemple suivant renvoie la liste des autorisations effectives détenues par l'appelant sur un utilisateur nommé MalikAr dans la base de données active.

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

H. Répertorier les autorisations effectives d’une autre connexion

L’exemple suivant renvoie la liste des autorisations effectives détenues par le nom d’utilisateur SQL Server WanidaBenshoof sur la table Employee du schéma HumanResources dans la base de données AdventureWorks2022. L’appelant nécessite IMPERSONATE une autorisation sur la connexion WanidaBenshoofSQL Server.

EXECUTE AS LOGIN = 'WanidaBenshoof';

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

REVERT;
GO