授予某个数据库中所有存储过程的执行权限

时间:2011-02-24 19:41:18

标签: sql-server stored-procedures permissions

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

感谢您的帮助。

3 个答案:

答案 0 :(得分:9)

除了授予权限外,您还应该考虑模式。

因此,您的存储过程在Procs架构中命名

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

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

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

答案 1 :(得分:6)

生成语句,然后复制它们并粘贴到查询窗口中运行它们

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

答案 2 :(得分:4)

您必须在架构上授予执行权限,如果您有多个架构,则必须重复

grant  execute on schema :: yourschema to username