sys.fn_my_permissions (Transact-SQL)
S’applique à : point de terminaison d’analytique SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Platform System (PDW) SQL Analytics dans Microsoft Fabric Warehouse 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 NULL
sur . 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 KEY
CONTRACT
CERTIFICATE
DATABASE
ENDPOINT
ASSEMBLY
, , FULLTEXT CATALOG
, OBJECT
REMOTE SERVICE BINDING
LOGIN
MESSAGE TYPE
ROLE
, ROUTE
, SCHEMA
, , SERVICE
XML SCHEMA COLLECTION
SERVER
SYMMETRIC KEY
TYPE
USER
, . 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_permissions
ne peut pas vérifier les 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 WanidaBenshoof
SQL Server.
EXECUTE AS LOGIN = 'WanidaBenshoof';
SELECT *
FROM fn_my_permissions('AdventureWorks2022.HumanResources.Employee', 'OBJECT')
ORDER BY subentity_name, permission_name;
REVERT;
GO