Sé que puedo consultar permisos efectivos usando 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
...
Esto me dice si el usuario actual tiene permisos SELECT, INSERT, UPDATE, etc. myTable
en la base de datos myDatabase
.
¿Es posible descubrir fácilmente por qué el usuario tiene estos permisos? Por ejemplo, me encantaría tener una función fn_my_permissions_ex
que genere una reason
columna adicional :
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
...
Desafortunadamente, no pude encontrar dicha función en la documentación de SQL Server. ¿Existe alguna herramienta o script que brinde esta funcionalidad?
fn_my_permission_ex
, por lo que no hay nada que pueda exportar. Estoy preguntando si hay una función o herramienta con esa funcionalidad .