如何找到自定义角色具有执行权限的存储过程? SQL SEVER

时间:2018-03-06 15:40:40

标签: sql sql-server stored-procedures ssms sql-server-2017

我正在尝试使用查询来确定自定义角色具有执行权限的存储过程。我尝试使用has_perms_by_name,但我没理解并使用它。

2 个答案:

答案 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