是否可以设置SQL Server以便为开发人员提供对生产数据库中存储过程内容的只读访问权限?
答案 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)
答案 2 :(得分:6)
我需要授予对域帐户的访问权限..这个语法是
将schema :: [dbo]上的视图定义授予" domain \ BOB"
答案 3 :(得分:2)
答案 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中的所有框。
无需运行脚本即可完成上述操作。