Ich weiß, dass ich effektive Berechtigungen abfragen kann, indem ich Folgendes verwende 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
...
Hier erfahren Sie, ob der aktuelle Benutzer über die Berechtigungen SELECT, INSERT, UPDATE usw. myTablein der Datenbank verfügt myDatabase.
Kann man leicht herausfinden, warum der Benutzer über diese Berechtigungen verfügt? Ich hätte zum Beispiel gerne eine Funktion, fn_my_permissions_exdie eine zusätzliche reasonSpalte ausgibt :
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
...
Leider konnte ich eine solche Funktion in der SQL Server-Dokumentation nicht finden. Gibt es ein Tool oder Skript, das diese Funktionalität bietet?
fn_my_permission_ex, also nichts, was ich exportieren könnte. Ich frage, ob es eine Funktion oder ein Tool mit dieser Funktionalität gibt .