2010-02-25 37 views
3

在大多數的我們的存儲過程的底部,我們有類似轉讓權限到另一個SQL服務器

GRANT EXECUTE ON [dbo].[uspFOO] TO [DOMAIN\SQLServerUsers] 

幸運對我的資助,我們的領域正在發生變化,我們現在需要通過並更改權限。有誰知道使用數據庫元數據的簡單方法,因此我可以將[DOMAIN \ SQLServerUsers]授予運行的所有位置並將其替換爲[DOMAIN2 \ SQLServerUsers]?

謝謝。

對於這些要求,這是SQL Server 2005中

+0

應將「EXECUTE」授予角色,然後授予用戶或AD組角色。 – 2010-02-25 15:54:44

回答

1

什麼版本的SQL Server是你?

在2005年,你可以

  • 創建一個新的數據庫角色 「db_executor」 做

    GRANT EXECUTE TO db_executor 
    
  • 授予該數據庫角色的所有必要的用戶

這將創建一個「全部捕捉」角色,對每個現有的執行權限和未來(!!)存儲過程在您的數據庫中。是的,那也包括未來的存儲過程!非常方便(至少只要每個用戶都可以執行所有存儲過程)

這樣,您不必爲每個存儲過程創建單獨的GRANT EXECUTE語句.......

+0

我們可以這樣來緩解我們的痛苦,但我知道我們有特定的存儲過程,我們不希望用戶有權訪問。如果我正確理解了你,那麼這將使所有存儲過程執行到AD組,這不完全是我們想要的。 – Rebthor 2010-02-25 16:17:09

+0

不適用於AD組 - 適用於SQL數據庫角色。這個角色可以根據需要分配給SQL Server登錄名,如你所願 – 2010-02-25 17:04:45

+0

好吧,但是如果我有一個名爲restricted_proc的存儲過程並且創建了上述執行者角色,那麼執行程序是否可以運行restricted_proc?如果是的話,那麼當我指派我的大型AD組擔任這個角色時,我是否還沒有打開一個巨大的安全漏洞? 儘管如此,我將其標記爲已接受,因爲它會在我們遷移權限時快速恢復運行。 – Rebthor 2010-02-25 19:10:46