2011-02-24 157 views
5

正如标题所示,我需要授予数据库中每个存储过程的执行权限。我们已经从测试转移到生产,并且对生产数据库的控制更少..所有导入的存储过程现在都获得了零权限。一个有趣的事情要知道,是否有任何方法可以确保所有导入的存储过程从一开始就获得执行权限?授予对某个数据库中所有存储过程的执行权限

感谢您的任何帮助。

回答

6

生成报表,然后将它们复制并粘贴到查询窗口运行它们

select 'grant execute on ' + 
    QuoteName(specific_schema) + '.' + 
    QuoteName(specific_name) + ' to someone' 
from information_schema.routines 
where routine_type='PROCEDURE' 
+0

你能解释一下你所说的“生成报表”是什么意思? – Phil 2011-02-24 19:46:08

+0

啊,没关系,我想我现在该做什么 – Phil 2011-02-24 19:47:34

+0

谢谢,那只是..美丽 – Phil 2011-02-24 20:03:13

9

除了授予权限,你应该考虑的模式。

所以,你的存储的特效是在特效模式

  • Procs.DoStuff
  • Procs.DoMoreStuff
  • Procs.WriteStuff

然后你可以GRANT EXECUTE ON SCHEMA::Procs TO RoleWhatever命名。在Procs中创建的所有存储过程然后继承EXECUTE权限

角色无论是生产中的支持角色还是其他环境中的开发人员角色。

+0

在此处执行此操作的示例sql:http://stackoverflow.com/a/19119243/150342 – Colin 2013-10-07 12:35:54

4

你必须授予对架构的执行权限和重复,如果你有多个模式

grant execute on schema :: yourschema to username 
相关问题