2011-03-09 53 views
3

我想授予角色db_datareader執行特定存儲過程的權限。數據庫角色的存儲過程執行權限

這是可能的,如果是的話,我該如何做到這一點?我試圖在存儲過程的權限選項卡中添加角色,但這似乎不起作用,角色不被接受爲有效的對象。

編輯
基於從cainz答案,我都試過GRANT EXECUTE ON [SP_NAME] TO db_datareader,但該消息是:

Msg 4617, Level 16, State 1, Line 1 
Cannot grant, deny or revoke permissions to or from special roles. 

這似乎是不可能的什麼我想做的事。

回答

5

由於無法修改系統角色的權限,因此無法直接執行所需操作。這是一件好事:你不希望你的系統角色與其他人有不同的定義,因爲修補程序和服務包可能有副作用,第三方工具可能會中斷,新開發人員會(不愉快地)感到驚訝等。

您只需要使用腳本或其他工具來管理數據庫中的權限。顯而易見的解決方案就是創建您自己的角色並將您的數據庫用戶放到兩個角色中;這很容易編寫腳本,無論如何明確規劃和記錄安全模型是一種很好的做法。有什麼具體的原因,爲什麼這不適合你的環境?

(注:這是可以添加您自己的角色進入的db_datareader,但documentation特別警告做到這一點。)

1

這是記錄在BOL/MSDN的http://msdn.microsoft.com/en-us/library/ms345484.aspx - 注意黃色方框,告訴你如果這是一個系統過程需要做什麼。

+0

這似乎並沒有被解決。在黃色框中寫入SSMS不能授予系統存儲過程的權限。我的存儲過程不是系統存儲過程。但是這樣的文章寫在文章中,我試圖用GRANT給予許可,但是這似乎是不可能的,請參閱我的編輯。無論如何感謝... – HCL 2011-03-09 09:30:28

+0

正確的,你不能用另一個角色包裝它,因爲你不能將db_datareader添加到你的自定義角色中...... – cairnz 2011-03-09 09:30:54

相關問題