将角色用户列为标准用户

List role users as a standard user

由于权限不足,普通用户无法列出属于特定角色的数据库用户。

Execute as 似乎不起作用(在存储过程中)。

仅列出 returns 当前用户。

我的问题:

如何让普通用户(被授予对相关存储过程的执行权限)获取所有角色用户的列表?

如何在存储过程中封装高权限功能:

CREATE PROCEDURE dbo.GetRoleList
WITH EXECUTE AS OWNER
AS
BEGIN
   SELECT ...
END
GO

当然,您应该使用有权列出角色用户的用户来创建过程。当普通用户执行该过程时,将使用所有者的权限(因此允许执行 "elevated" 查询)。

查看 this post 了解更多详情。