程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> MS-SQL2005服務器登錄名、角色、數據庫用戶、角色、架構的關系

MS-SQL2005服務器登錄名、角色、數據庫用戶、角色、架構的關系

編輯:關於SqlServer

MS SQL2005對2000進行了很大的改進,而用戶關系這部分也變得相當復雜了,很多朋友都對此一知半解!下面,我將把我應用中總結的和大家分享下,先從概念入手,希望對不理解的朋友有點提示。

今天我們要說的包括服務器登錄名Server Login,服務器角色Server Role,數據庫用戶DB User,數據庫架構DB Schema,數據庫角色DB Role 。以上幾個名詞應該從服務器與數據庫來區分,服務器包含一到多個數據庫,其中:

服務器登錄名,指有權限登錄到某服務器的用戶;

服務器角色,指一組固定的服務器用戶,默認有9組;

  • 登錄名一定屬於某些角色,默認為public
  • 服務器角色不容許更改
  • 登錄後也不一定有權限操作數據庫

數據庫用戶,指有權限能操作數據庫的用戶;

數據庫角色,指一組固定的有某些權限的數據庫角色;

數據庫架構,指數據庫對象的容器;

  • 數據庫用戶對應於服務器登錄名以便登錄者可以操作數據庫
  • 數據庫角色可以添加,可以定制不同權限  
  • 數據庫架構,類似於數據庫對象的命名空間,用戶通過架構訪問數據庫對象

而通過下圖可以讓這些概念清晰一些:

    

即:

  1. 服務器登錄名屬於某組服務器角色;
  2. 服務器登錄名需要於數據庫的用戶映射後才擁有操作數據庫的權限
  3. 數據庫用戶屬於某組數據庫角色以獲取操作數據庫的權限
  4. 數據庫角色擁有對應的數據庫架構,數據庫用戶可以通過角色直接擁有架構
  5. 數據庫用戶有默認架構,寫SQL語句可以直接以“對象名”訪問
  6. 非默認架構則要以“架構名.對象名”訪問

因此,新建一個非SA賬戶並建立數據庫的過程可以如下:

1、新建登錄名Login1

 

2、新建數據庫DB1

 

3、新建DB1的架構Schema1

 

4、新建BD1的用戶User1,登錄名對應Login1,默認架構選擇Schema1,角色選擇db_owner

 

5、在登錄名Login1的屬性窗口裡選擇“用戶映射”,勾選DB1,在用戶裡填寫User1,默認架構選擇"Schema1"

 

6、至此,新建表名會是Schema1.Table1,其他對象也如此

 

 

7、當然還可以新建其他架構的對象Schema2,只有User1擁有該架構,一樣可以訪問,如Schema2.Table2

值得注意的是,當為登錄映射數據庫用戶的時候,多個數據庫可以有相同名稱的用戶,而單獨為某個數據庫新建的用戶,如User1,則在其他數據庫裡不允許同名。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved