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

c00*_*ler 0 sql-server stored-procedures

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

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

M.A*_*Ali 5

是的,这是可能的,只需取消该用户的所有权限并仅授予用户对单个过程的执行权限。

GRANT EXECUTE ON dbo.ProcedureName TO [UserName];
Run Code Online (Sandbox Code Playgroud)

或者

GRANT EXECUTE ON OBJECT::dbo.ProcedureName TO [UserName];
Run Code Online (Sandbox Code Playgroud)