面試核心問題
請區分 SQL Server 2000 中的登入、用戶、角色,並舉例說明。進階追問:登入 ID 是否等同用戶名?一個登入能否對應多個用戶?
教科書標準答案
- 登入:僅允許連接 SQL Server 實例(Instance 級)。
- 用戶:存在於特定資料庫內,控制該資料庫權限(Database 級)。DBA 將登入映射至資料庫用戶。
- 角色:權限集合,便於批量管理。分為伺服器角色(Instance 級)與資料庫角色(Database 級)。用戶可隸屬多角色。
範例:sa 為用戶,public/db_owner/db_datareader 為角色。授予 sa db_owner 角色即擁有該資料庫完全控制權。
命題官深度理解(架構視角)
| 層級 | 登入 | 用戶 | 角色 |
| 實例級 | ✓ | ✗ | ✓ (伺服器角色) |
| 資料庫級 | ✗ | ✓ | ✓ (資料庫角色) |
- 登入決定能否進入 SQL 實例大門。
- 用戶與登入對應,決定登入在特定資料庫擁有何種權限。
- 一個登入可對應多個資料庫的不同用戶(跨資料庫權限隔離)。
- 同一資料庫中,一個登入僅能對應一個用戶(一對一映射)。
- 角色為權限管理便利性設計:將同類權限打包,授予角色而非逐一授權。
生動比喻:公司組織架構
- SQL 實例 = 公司
- 登入 = 員工證(入職即獲發,決定能否進公司大門)
- 資料庫 = 部門
- 用戶 = 部門花名冊(員工需被加入部門名單才能在該部門工作,一人可同時列入多部門名單)
- 角色 = 職位/頭銜(董事長為公司級角色,部門經理為部門級角色;授予職位即獲得對應權責,調動人員只需增減職位指派)
關鍵總結
- 登入 = 實例級身分識別;用戶 = 資料庫級權限載體;角色 = 權限集合管理工具。
- 登入→用戶映射為多對多(跨資料庫),但單一資料庫內為一對一。
- 角色分層級(實例/資料庫),支援靈活授權與人員變動。
- 權限管理最佳實踐:以角色為核心,避免直接授予用戶細粒度權限。
掌握此三層架構與映射關係,即能精準設計企業級 SQL Server 安全性模型,也是 DBA 面試必過關鍵。