В 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
означает положительный.