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. myTableW 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_exktóra wyświetla dodatkową reasonkolumnę:
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ą .