db-role的存储过程执行权限

HCL*_*HCL 4 sql-server sql-server-2008

我想赋予角色db_datareader执行特定存储过程的权限.

这是可能的,如果可以,我该如何实现?我试图在存储过程的权限选项卡中添加该角色,但这似乎不起作用,该角色不被接受为有效对象.

编辑
根据cainz的回答,我试过了GRANT EXECUTE ON [SP_NAME] TO db_datareader,但是消息是:

Msg 4617, Level 16, State 1, Line 1
Cannot grant, deny or revoke permissions to or from special roles.
Run Code Online (Sandbox Code Playgroud)

似乎我不想做什么.

Pon*_*ife 6

您无法直接执行所需操作,因为您无法修改系统角色的权限.这是一件好事:你不希望你的系统角色与其他人有不同的定义,因为补丁和服务包可能有副作用,第三方工具可能会破坏,新开发人员会(令人不快)感到惊讶等.

您只需使用脚本或其他工具管理数据库中的权限.显而易见的解决方案就是创建自己的角色并将数据库用户放入两个角色; 这很容易编写脚本,无论如何都要明确地规划和记录您的安全模型.有什么特别的理由说明这不适合您的环境吗?

(注意:可以将自己的角色添加到db_datareader中,但文档特别警告要这样做.)