我一直想知道爲什麼數據庫角色列表(db_datareader
,db_datawriter
,等)從未包含db_storedprocedureexecutor
。其他人是有道理的,但它似乎能夠授予執行所有存儲特效到一個特定用戶(不授予他們,這是唯一的其他方式來完成相同的事情)的能力將是一個方便的事情。例如,假設我想讓我的所有開發人員都有權運行存儲過程,但不讓他們執行任何DDL - 如果沒有在每個存儲過程中明確授予EXECUTE(然後記住在添加新的存儲過程時添加新的DDL) SP部署),沒有辦法做到這一點(我知道SP可以包含DDL,因此它們仍然可以通過這種方式間接地被允許訪問DDL)。爲什麼沒有內置的「存儲過程執行器」數據庫角色?
如果我有一個應用程序服務帳戶和一些與我的應用程序一起存儲的過程,我必須明確授予每個SP的權限(因爲我不想授予我的應用程序服務帳戶DBO),而我可以使用角色來允許他們更新/刪除他們想要的任何內容。雖然最初看起來很明顯,但我現在不確定爲什麼數據庫服務器中缺少這個角色 - 有沒有人可以解釋爲什麼這是一個可怕的想法(正如我假設的那樣,或者它已經存在)?
編輯:
看來我不是唯一一個有這種期望 - 和it's worked around with a handful of T-SQL(似乎可以授予毯子EXECUTE權,這我不知道,你可以這樣做),這只是讓我想知道爲什麼它不是標準!
我也是!我們基本上創建了自己的'db_executor'角色,模仿'db_datareader'來解決這個問題。但是:爲什麼不在SQL Server基礎包中?不知道....一樣:爲什麼有一個'sys.procedures'目錄視圖,但沒有'sys.functions'一個......讓你走的東西:嗯........ – 2010-11-21 19:34:52