是否可以在存储过程上授予用户执行权限,但即使他键入完全相同的存储过程,也阻止他运行其他查询?
基本上我在这里想要实现的是阻止用户查看视图中的所有行(从View1中选择所有行),但是他只能通过存储过程选择一行“where”条件。
答案 0 :(得分:1)
是的,可以简单地删除该用户的所有权限,并仅授予用户对单个过程的执行权限。
GRANT EXECUTE ON dbo.ProcedureName TO [UserName];
或
GRANT EXECUTE ON OBJECT::dbo.ProcedureName TO [UserName];
答案 1 :(得分:0)
为什么不为该用户创建仅限于特定用户有权访问的数据的视图?无需使用存储过程来简单地访问一行数据。
通过使用有限视图,用户可以选择将该视图记录作为JOIN
合并到查询中,或者根据需要编写自己的存储过程/函数。一种观点是一种更灵活的方式来做你正在尝试的事情。