授予用户只执行一个存储过程但不能运行其他查询的权限

时间:2017-01-25 22:52:02

标签: sql-server stored-procedures

是否可以在存储过程上授予用户执行权限,但即使他键入完全相同的存储过程,也阻止他运行其他查询?

基本上我在这里想要实现的是阻止用户查看视图中的所有行(从View1中选择所有行),但是他只能通过存储过程选择一行“where”条件。

2 个答案:

答案 0 :(得分:1)

是的,可以简单地删除该用户的所有权限,并仅授予用户对单个过程的执行权限。

GRANT EXECUTE ON dbo.ProcedureName TO [UserName];

GRANT EXECUTE ON OBJECT::dbo.ProcedureName TO [UserName];

答案 1 :(得分:0)

为什么不为该用户创建仅限于特定用户有权访问的数据的视图?无需使用存储过程来简单地访问一行数据。

通过使用有限视图,用户可以选择将该视图记录作为JOIN合并到查询中,或者根据需要编写自己的存储过程/函数。一种观点是一种更灵活的方式来做你正在尝试的事情。