我使用的是SQL Server 2008 Express版。
我已经创建了登录、用户、角色和架构。我已经将用户映射到登录,并将角色分配给用户。
该架构包含许多表和存储过程。
我希望该角色具有对整个架构的执行权限。
我已经尝试通过management studio和在查询窗口中输入命令来授予执行权限。
GRANT EXEC ON SCHEMA::schema_name TO role_name但是当我使用SQL management studio (作为我创建的登录名)连接到数据库时,首先我看不到存储过程,但更重要的是,当我试图运行它们时,我得到了一个权限被拒绝的错误。
所讨论的存储过程除了从同一schma中的表中选择数据之外,什么也不做。
我已经尝试过使用和不使用以下行来创建存储过程:
WITH EXECUTE AS OWNER这没有任何区别。
我怀疑我在创建我的模式时犯了一个错误,或者在某个地方存在所有权问题,但我真的很难让一些东西正常工作。
我成功执行存储过程的唯一方法是向角色授予control权限和execute权限,但我不认为这是正确、安全的继续执行的方法。
如有任何建议或意见,我们将不胜感激。
谢谢。
发布于 2011-05-17 23:15:43
我在你的案例中看到了几个问题。
首先,您需要授予View Definition权限,以便能够在Management studio中查看对象。
如果您希望角色拥有所有权限,我建议您这样做。
GRANT EXECUTE, SELECT, INSERT, UPDATE, DELETE, VIEW DEFINITION
ON Schema::SchemaName TO [RoleName/LoginName]还要确保用户定义模式的所有者是"dbo“。
https://stackoverflow.com/questions/4428619
复制相似问题