检查是否应用了 GRANT EXECUTE T​​O 用户或角色

mir*_*lav 4 permissions audit sql-server

在 Microsoft SQL Server 中,我可以使用

GRANT EXECUTE TO <principal>
Run Code Online (Sandbox Code Playgroud)

授予某些用户或角色执行权限。我对检测感兴趣:

我怎样才能同样简单地检查该GRANT EXECUTE命令是否已经应用于给定的用户/角色?(由我或其他管理员)

例子:

如果我使用GRANT EXECUTE TO user01并在几周后返回:是否有一种简单的方法来检查我(或其他人)是否已经使用过GRANT EXECUTE TO user01

mir*_*lav 6

我找到了它的存储位置,因此在有人发布更简单的答案之前,我将保留此代码片段以供检查:

DECLARE @username nvarchar(128) = 'user01';

SELECT COUNT(*) FROM sys.database_permissions 
    WHERE grantee_principal_id = (SELECT UID FROM sysusers WHERE name = @username) 
        AND class_desc = 'DATABASE'
        AND type='EX' 
        AND permission_name='EXECUTE' 
        AND state = 'G';
Run Code Online (Sandbox Code Playgroud)

结果0表示否定回答,1表示肯定回答。