只读访问存储过程内容

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了只读访问存储过程内容相关的知识,希望对你有一定的参考价值。

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

答案

授予他们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
另一答案

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

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

MSDN

另一答案

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

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

另一答案

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

select 'GRANT VIEW DEFINITION ON [' + schema_name(schema_id) + '].[' + name +
       '] TO ' + '[domainusername]'
  from sys.all_objects
 where type_desc = 'SQL_STORED_PROCEDURE'
   and schema_id <> schema_id('sys')
另一答案

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

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

以上是关于只读访问存储过程内容的主要内容,如果未能解决你的问题,请参考以下文章

只读访问执行 SP/get 结果集的角色,无需间接修改 db?

Django REST框架--认证和权限

带有 PHP PDO 的只读副本上的 MySQL 存储过程

存储系统

存储库访问被拒绝。通过部署密钥访问是只读的

第三章 存储器(重点)