Я знаю, що я можу запитувати ефективні дозволи, використовуючи 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
, тому я не міг би експортувати. Я запитую, чи є функція чи інструмент із такою функціональністю .