我正在尝试使用查询来确定自定义角色具有执行权限的存储过程。我尝试使用has_perms_by_name,但我没理解并使用它。
答案 0 :(得分:1)
假设您只关心该角色明确授予执行权限的存储过程:
DECLARE @role SYSNAME = 'MyRole';
SELECT o.[name]
FROM sys.database_permissions p
JOIN sys.objects o ON p.major_id = o.[object_id]
JOIN sys.database_principals pr ON p.grantee_principal_id = pr.principal_id
WHERE pr.[name] = @role
AND p.[state] = 'G' -- GRANT
AND p.[type] = 'EX' -- EXECUTE
AND o.[type] = 'P' -- PROCEDURE
这不包括角色被赋予全局GRANT EXECUTE
的(不常见)情况。
答案 1 :(得分:0)
this应该给你的目标:
preserve_newlines