原創鏈接:https://www.cnblogs.com/junfly/articles/2798023.html SQL SERVER 基礎教程中關於伺服器登錄名、伺服器角色、資料庫用戶、資料庫角色、架構的關係。 我們要說的包括伺服器登錄名Server Login,伺服器角色Server Role ...
原創鏈接:https://www.cnblogs.com/junfly/articles/2798023.html
SQL SERVER 基礎教程中關於伺服器登錄名、伺服器角色、資料庫用戶、資料庫角色、架構的關係。
我們要說的包括伺服器登錄名Server Login,伺服器角色Server Role,資料庫用戶DB User,資料庫架構DB Schema,資料庫角色DB Role 。以上幾個名詞應該從伺服器與資料庫來區分,伺服器包含一到多個資料庫,其中:
伺服器登錄名,指有許可權登錄到某伺服器的用戶;
伺服器角色,指一組固定的伺服器用戶,預設有9組;
- 登錄名一定屬於某些角色,預設為public
- 伺服器角色不容許更改
- 登錄後也不一定有許可權操作資料庫
資料庫用戶,指有許可權能操作資料庫的用戶;
資料庫角色,指一組固定的有某些許可權的資料庫角色;
資料庫架構,指資料庫對象的容器;
- 資料庫用戶對應於伺服器登錄名以便登錄者可以操作資料庫
- 資料庫角色可以添加,可以定製不同許可權
- 資料庫架構,類似於資料庫對象的命名空間,用戶通過架構訪問資料庫對象
而通過下圖可以讓這些概念清晰一些:
即:
- 伺服器登錄名屬於某組伺服器角色;
- 伺服器登錄名需要於資料庫的用戶映射後才擁有操作資料庫的許可權
- 資料庫用戶屬於某組資料庫角色以獲取操作資料庫的許可權
- 資料庫角色擁有對應的資料庫架構,資料庫用戶可以通過角色直接擁有架構
- 資料庫用戶有預設架構,寫SQL語句可以直接以“對象名”訪問
- 非預設架構則要以“架構名.對象名”訪問
因此,新建一個非SA賬戶並建立資料庫的過程可以如下:
1、新建登錄名Login1
2、新建資料庫DB1
3、新建DB1的架構Schema1
使用 SQL Server Management Studio 創建架構
-
在 SQL Server Management Studio 中,打開對象資源管理器,然後展開“資料庫”文件夾。
-
展開要在其中創建新資料庫架構的資料庫。
-
右鍵單擊“安全性”文件夾,指向“新建”,然後單擊“架構”。
-
在“常規”頁上的“架構名稱”框中輸入新架構的名稱。
-
在“架構所有者”框中,輸入要擁有該架構的資料庫用戶或角色的名稱。
-
單擊“確定”。
4、新建BD1的用戶User1,登錄名對應Login1,預設架構選擇Schema1,角色選擇db_owner
使用 SQL Server Management Studio 創建用戶
-
在 SQL Server Management Studio 中,打開對象資源管理器,然後展開“資料庫”文件夾。
-
展開要在其中創建新資料庫架構的資料庫。
-
右鍵單擊“安全性”文件夾,指向“新建”,然後單擊“用戶”。
-
在“常規”頁上的“用戶名”框中輸入”用戶名“。
- 選擇登錄名 如下圖
- 選擇預設的建構 如下圖
- 單擊“確定”。
5、在登錄名Login1的屬性視窗里選擇“用戶映射”,勾選DB1,在用戶里填寫User1,預設架構選擇"Schema1"
6、至此,新建表名會是Schema1.Table1,其他對象也如此
7、當然還可以新建其他架構的對象Schema2,只有User1擁有該架構,一樣可以訪問,如Schema2.Table2
值得註意的是,當為登錄映射資料庫用戶的時候,多個資料庫可以有相同名稱的用戶,而單獨為某個資料庫新建的用戶,如User1,則在其他資料庫里不允許同名。