2009-07-20 42 views
35

我一直在試圖弄清爲什麼SQL Server有db_owner架構和db_owner角色?這很混亂。我一直在尋找答案,到目前爲止,這是我的理解:SQL Server角色,架構,用戶

  1. 所有表和對象(如約束等)屬於一個模式。 DBO是默認模式。
  2. 用戶可能被授予編輯每個對象或模式的權限。模式權限將該權限擴展到該模式中的所有對象。所以你不必爲每個單獨的對象授予許可。
  3. 角色將權限組合在一起以方便使用。

如果任何這是不正確的讓我知道。但我認爲這麼好。現在我的問題是:

  1. 究竟是什麼db_owner架構如SQL Server Management Studio的「數據庫用戶」對話框中所示?並在同一個對話框中,將「默認模式」定義爲dbo。爲什麼這兩個不一樣?如果默認情況下SQL Server使用dbo來創建所有對象,那麼使用什麼是db_owner
  2. 爲什麼用戶想擁有一個模式?您正在分配權限/角色。擁有db_accessadmin會給你什麼?
  3. 您可以舉一個例子,說明何時在db_owner模式和db_accessadmin模式下創建對象?換句話說,是否有人合法地使用這些模式?
+0

同意。用同一個名字創建兩種不同的對象(一種模式和角色)是很荒謬的。 – LarryBud 2015-03-11 14:43:14

回答

23

甲SQL Server架構只是一個對象,如表,存儲過程,的容器等數據庫角色是一組負責人,如窗戶登錄,SQL服務器的用戶,等等

的的想法是你可以扮演「IT」的角色,並讓所有IT用戶擔任這個角色。然後你可以創建一個名爲「IT」的模式,並且擁有屬於IT的所有表。開箱即用SQL Server爲數據庫中的每個默認用戶和角色創建匹配模式,但我認爲您的意圖是將其自定義以符合組織的需求。

This article有關於所有者和模式之間差異的更多信息。 Stack Overflow上的This question也可能有用。

+0

這篇文章非常有用。因此,從您的答案中可以看出,db_accessadmin架構是無用的,並且是db_accessadmin角色的副作用。沒有人在db_accessadmin模式下創建表,而是使用與您的數據更相關的模式。 是否有一個對象/模式的「所有權」給你的列表?這個對象是否可以想象到所有的權利?或者你可以成爲一個沒有閱讀權利的所有者? – Budric 2009-07-20 19:58:50

0

我從以下鏈接引用以下內容。

https://msdn.microsoft.com/en-us/library/bb669061(v=vs.110).aspx

SQL Server附帶10個預置定義架構具有相同的名稱作爲內置的數據庫用戶和角色。這些主要是爲了向後兼容。如果不需要它們,可以刪除與固定數據庫角色具有相同名稱的模式。不能刪除下面的模式:

  • dbo
  • guest
  • sys
  • INFORMATION_SCHEMA