我已经创建了一些存储过程,我试图在Web应用程序中执行它们。为了保证安全性,我创建了SQL Server用户,登录角色和权限。
然后,我授予规则的执行权限,并将该规则提供给特定用户。我的问题是,例如,如果我将StoredProcedureA
的执行授予roleA
,StoredProcedureA
使用表格上的选择,我就会收到错误
对象'[tableA]'
上的SELECT权限被拒绝
错误很容易修复:我必须在该表上授予select。
但由于我在项目中使用了很多程序,因此很难对每个程序进行修改。有没有办法配置SSMS,以便如果我将过程的执行授予角色,该角色将自动拥有该过程中的操作(选择,插入,更新,删除)的所有权限?
由于
答案 0 :(得分:0)
您可以更改您的程序以包含EXECUTE AS
条款吗?
示例:
ALTER PROCEDURE sprocName...
EXECUTE AS dbo -- high level example
...
这将允许您仅授予您的用户和角色执行程序的能力,但是程序能够执行所需的操作,包括选择,插入,更新等。