如何在架构上授予数据库angular色执行权限? 我究竟做错了什么?

我正在使用SQL Server 2008 Express版本。

我已经创build了一个login,用户,angular色和架构。 我已经将用户映射到login名,并将angular色分配给用户。

该模式包含许多表和存储过程。

我希望angular色具有对整个模式的执行权限

我已经尝试通过pipe理工作室授予执行权限,并通过在查询窗口中input命令。

GRANT EXEC ON SCHEMA::schema_name TO role_name 

但是当我使用SQLpipe理工作室(作为我创build的login名)连接到数据库时,首先我看不到存储过程,但是更重要的是,在尝试运行时,我得到了一个拒绝权限的权限。

有问题的存储过程除了从同一模式中的表中select数据之外不做任何事情。

我已经尝试创build存储的过程有和没有行:

 WITH EXECUTE AS OWNER 

这没有任何区别。

我怀疑在创build我的模式时出错,或者在某个地方存在所有权问题,但是我非常努力的去做一些工作。

我成功地设法执行存储过程的唯一方法是授予angular色的控制权限以及执行权限,但是我不认为这是正确的,安全的方式。

任何build议/意见将非常感激。

谢谢。

我不知道如何限制这个到一个特定的模式(虽然你的语法看起来应该工作),但如果它是可以接受的对整个数据库的执行权限下面将做的伎俩,然后添加您的login到angular色Ankur介绍。

 grant execute to <ROLE_NAME> 

此外,将VIEW DEFINITION授予此angular色将允许loginangular色以查看存储过程。

我已经有了以下的技巧(使用一个名为“myschema”的模式)。 这听起来像你有大部分的作品,但架构/angular色所有权可能没有设置正确。

 -- Create the role that will own the schema CREATE ROLE [myschema_owner] AUTHORIZATION [dbo]; -- Create the role that will have execute permissions on the schema CREATE ROLE [myschema_execute] AUTHORIZATION [dbo]; -- Create the schema owned by our role CREATE SCHEMA [myschema] AUTHORIZATION [myschema_owner]; -- Assign execute permissions to execute role GRANT SELECT, EXECUTE ON SCHEMA::[myschema] TO [myschema_execute]; 

使用SAlogin或Windows身份validation打开SQL Server Management Studio

去证券>>login

右键点击用户和属性

转到用户映射

select数据库名称

并分配权限

DONE