Je sais que je peux interroger les autorisations effectives en utilisant sys.fn_my_permissions
:
USE myDatabase;
SELECT * FROM fn_my_permissions('dbo.myTable', 'OBJECT')
entity_name | subentity_name | permission_name
------------------------------------------------
dbo.myTable | | SELECT
dbo.myTable | | UPDATE
...
Cela me dit si l'utilisateur actuel a les autorisations SELECT, INSERT, UPDATE, etc. sur myTable
dans la base de données myDatabase
.
Est-il possible de savoir facilement pourquoi l'utilisateur dispose de ces autorisations? Par exemple, j'aimerais avoir une fonction fn_my_permissions_ex
qui génère une reason
colonne supplémentaire :
USE myDatabase;
SELECT * FROM fn_my_permissions_ex('dbo.myTable', 'OBJECT')
entity_name | subentity_name | permission_name | reason
------------------------------------------------------------------------------------------------------------------------------------
dbo.myTable | | SELECT | granted to database role public
dbo.myTable | | UPDATE | member of group MYDOMAIN\Superusers, which belongs to database role db_datawriter
...
Malheureusement, je n'ai pas pu trouver une telle fonction dans la documentation de SQL Server. Existe-t-il un outil ou un script qui fournit cette fonctionnalité?
fn_my_permission_ex
, donc il n'y a rien que je puisse exporter. Je demande s'il existe une fonction ou un outil avec cette fonctionnalité .