我正在使用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