只读访问存储过程内容

时间:2010-08-20 16:56:34

标签: sql-server sql-server-2005 sql-server-2008

是否可以设置SQL Server以便为开发人员提供对生产数据库中存储过程内容的只读访问权限?

6 个答案:

答案 0 :(得分:42)

将这些权限授予VIEW DEFINITION权限,请参阅此处http://msdn.microsoft.com/en-us/library/ms175808.aspx

  • 服务器范围

  • 数据库范围

  • 架构范围

  • 个人实体

您还可以使用查询来生成脚本。所以如果你有一个用户Bob

select 'GRANT VIEW DEFINITION ON ' + quotename(specific_schema) 
+ '.' + quotename(specific_name)
+ ' TO ' + 'BOB'
  from INFORMATION_SCHEMA.routines
where routine_type = 'PROCEDURE'

这会给你这样的东西,你可以运行

GRANT VIEW DEFINITION ON [dbo].[aspnet_RegisterSchemaVersion] TO BOB
GRANT VIEW DEFINITION ON [dbo].[aspnet_CheckSchemaVersion] TO BOB
GRANT VIEW DEFINITION ON [dbo].[aspnet_Applications_CreateApplication] TO BOB

答案 1 :(得分:9)

在dbo的模式范围级别执行的示例。

将schema :: [dbo]上的视图定义授予BOB

MSDN

答案 2 :(得分:6)

我需要授予对域帐户的访问权限..这个语法是

将schema :: [dbo]上的视图定义授予" domain \ BOB"

答案 3 :(得分:2)

数据库名称->安全性->用户->右键单击用户名->属性->选择安全内容->单击搜索->选择所有类型的对象->检查已存储过程->检查视图定义->确定。

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

答案 4 :(得分:1)

我的所有数据库程序的变体:

select 'GRANT VIEW DEFINITION ON [' + schema_name(schema_id) + '].[' + name +
       '] TO ' + '[domain\username]'
  from sys.all_objects
 where type_desc = 'SQL_STORED_PROCEDURE'
   and schema_id <> schema_id('sys')

答案 5 :(得分:0)

虽然我知道这个问题已经迟到了,但对于那些来到这里寻找答案的人(就像我几分钟前做的那样)至少在SQL管理工作室2014中你可以编辑用户帐户并在SECURABLES区域中编辑权限,并勾选您希望他们有权访问的VIEW中的所有框。

无需运行脚本即可完成上述操作。

相关问题