2011-02-24 153 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 
相關問題