授予EXECUTE权限不要授予选择表的权限

时间:2017-02-16 19:00:35

标签: sql-server database stored-procedures grant role

我有一个存储过程,在我们的订单处理中有多个选择用于检查和平衡,长话短说,这个存储过程读取(SELECT)大约20个表,分布在3个数据库中。

CREATE USER [stageUsrOrder] FOR LOGIN [domain\[my user]]
GO
CREATE ROLE OrderSpecRole AUTHORIZATION [stageUsrOrder]
GO
GRANT EXECUTE on [orders].[ValidateOrderById] TO pmdSchedulerRole
GO

我认为这些语句会让我对存储过程中的所有表进行读访问。

我试过

GRANT EXECUTE on [AVIS].[spReportValidationByLAN] TO pmdSchedulerRole WITH GRANT OPTION 
GO

但它没有用。

那么,我如何授予对存储过程的执行访问权限以及对内部所有表的SELECT?

1 个答案:

答案 0 :(得分:0)

你不是。存储过程的价值主张之一是您可以限制对某些模式的访问。例如,如果您希望人们只按ID搜索,那么您将提供一个以ID作为参数的存储过程。

但是如果你想给他们任意选择访问基础表,你必须明确地这样做。