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

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

在 Microsoft SQL Server 中,我可以使用

GRANT EXECUTE TO <principal>

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

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

例子:

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

答案1

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

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';

结果0意味着否定答案,1意味着肯定答案。

相关内容