在 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
意味着肯定答案。