由于权限不足,普通用户无法列出属于某个角色的数据库用户。
Execute as
似乎不起作用(在存储过程中)。
列表仅返回当前用户。
我的问题:
如何让普通用户(被授予对相关存储过程的执行权限)获取所有角色用户的列表?
答案 0 :(得分:2)
如何在存储过程中封装高权限功能:
CREATE PROCEDURE dbo.GetRoleList
WITH EXECUTE AS OWNER
AS
BEGIN
SELECT ...
END
GO
当然,您应该创建具有列出角色用户权限的用户的过程。当常规用户执行该过程时,将使用所有者的权限(从而允许执行“提升的”查询)。
查看this post了解详情。