是否可以设置SQL Server以使开发人员只能访问我们的生产数据库上存储过程的内容?只读访问存储过程内容
24
A
回答
37
授予他们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'
这会给你这样的事情,然后你就可以运行在为DBO模式范围水平做的
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
7
4
我需要授予域帐户访问..语法,这是在架构
许可视图定义: :[DBO]为 “域\ BOB”
0
我对所有的数据库程序变种:
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')
0
尽管我知道这个问题迟到了,但对于那些来到这里寻找答案的人(就像我几分钟前做的那样),至少在SQL管理工作室2014中,您可以编辑用户帐户并编辑SECURABLES区域中的权限并勾选您希望他们有权访问的VIEW中的所有框。
这样做不需要运行脚本。
是否有任何替代方法来设置每个存储过程?我希望有一种方法不要求每个进程都被修改。 – adam0101 2010-08-20 17:06:16
查看已更新回答 – SQLMenace 2010-08-20 17:20:26
太棒了。谢谢 – adam0101 2010-08-20 17:24:54