2012-04-09 23 views
1

什麼服務器角色(S)和/或數據庫角色(一個或多個)都必須用SQL登錄必須做到以下幾點:SQL Server - 用於應用程序訪問的角色是什麼?

  1. 讀取數據(包括臨時表)
  2. 寫入數據(包括臨時表)
  3. 他們被授予訪問

我們正在從SQL 2000遷移到2008年,我經歷的所有登錄,並已注意到他們都設置爲系統管理員&的db_owner,在數據庫中執行任何SP其中ISN很好。我們使用這些登錄的應用程序只會執行我上面列出的內容,所以這就是我想知道的原因。我知道我可以使用數據庫角色db_datareader & db_datawriter設置每個登錄,但不包括執行SP。我們有2個或者我們的數據庫接近300個SP,並且必須通過每個SP,並且在擴展屬性中設置登錄權限將是太長和乏味的。

任何幫助,非常感謝!

回答

0

我要麼只是對付它和手動或(我的偏好)權限設置創建有類型的,你想給權限的數據庫角色,並指定登錄到這些。這樣,如果多個登錄需要相同的一組權限,則只需給他們相同的角色。作爲獎勵,如果您的可編程性對象具有某種前綴命名約定,以便(例如)從您的登錄信息表中讀取的過程全部以pAccount_之類的東西開始,那麼您可以動態地執行GRANT s到基於例程前綴的角色。

+0

我走了這條路,因爲它給了我目前情況最靈活的方式。謝謝(你的)信息! – Robert 2012-04-10 12:31:08

1

不得不去通過每個SP和擴展屬性設置登錄權限會太長而乏味

然而,這也將是最安全的。

使用內置角色會將太多數據庫暴露給您的應用程序。

+0

是的,最安全的,但您如何管理所有的SP和登錄方面的權限?我們在這裏沒有數據庫管理員,這只是我(最近離開的另一個人)... – Robert 2012-04-09 20:12:57

1

你可以給db_datareader和/或db_datawriter執行權限嗎?這將使用戶有權在其有權訪問的數據庫中執行任何存儲過程。如果您有意見,您還需要授予他們選擇權。

GRANT EXECUTE TO db_datawriter 
+0

我想'Alter'不會被需要然後,看到這些應用程序如何不「改變」任何表。 ...是否包括刪除臨時表? – Robert 2012-04-09 20:49:02

相關問題