只读访问存储过程内容

问题描述 投票:26回答:5

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

sql-server sql-server-2005 sql-server-2008
5个回答
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

9
投票

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

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

MSDN


6
投票

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

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


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')

0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.