Я знаю, что могу запросить эффективные разрешения с помощью 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
...
Это говорит мне, имеет ли текущий пользователь разрешения SELECT, INSERT, UPDATE и т. Д. myTable
В базе данных myDatabase
.
Можно ли легко узнать, почему у пользователя есть такие разрешения? Например, я хотел бы иметь функцию, fn_my_permissions_ex
которая выводит дополнительный reason
столбец:
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
...
К сожалению, я не смог найти такую функцию в документации по SQL Server. Есть ли инструмент или скрипт, который обеспечивает эту функциональность?
fn_my_permission_ex
, поэтому я ничего не могу экспортировать. Я спрашиваю, есть ли функция или инструмент с этой функциональностью .