Wiem, że mogę sprawdzać efektywne uprawnienia, używając 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
...
To mówi mi, czy bieżący użytkownik ma uprawnienia SELECT, INSERT, UPDATE itp. myTable
W bazie danych myDatabase
.
Czy można łatwo dowiedzieć się, dlaczego użytkownik ma te uprawnienia? Na przykład chciałbym mieć funkcję, fn_my_permissions_ex
która wyświetla dodatkową reason
kolumnę:
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
...
Niestety nie mogłem znaleźć takiej funkcji w dokumentacji SQL Server. Czy istnieje narzędzie lub skrypt zapewniający tę funkcjonalność?
fn_my_permission_ex
, więc nie mogę nic wyeksportować. Pytam, czy istnieje funkcja lub narzędzie z tą funkcjonalnością .