登入帳戶 是存取 SQL Server 實例的入口,屬伺服器層級安全主體。妥善管理登入、密碼策略、預設資料庫與語言,是資料庫安全基石。本文詳細說明透過 Enterprise Manager (EM) 與系統預存程序 兩種管道的完整操作,並解析 Windows 驗證與 SQL Server 驗證的關鍵差異、孤立使用者處理與權限最小化原則。
DOMAIN\User 或 Machine\User;內建群組(如 Administrators)須在「網域」欄填 BUILTIN。master)與預設語言。sysadmin、securityadmin)或使用者對應,可於屬性頁籤進一步設定。僅適用於 SQL Server 驗證 模式;Windows 登入請用 sp_grantlogin/sp_revokelogin/sp_denylogin。
| 程序 | 功能 | 關鍵參數 |
|---|---|---|
sp_addlogin | 建立 SQL 登入 | @loginame, @passwd, @defdb, @deflanguage, @sid, @encryptopt |
sp_droplogin | 刪除 SQL 登入 | @loginame |
sp_password | 變更密碼 | @old, @new, @loginame |
sp_defaultdb | 變更預設資料庫 | @loginame, @defdb |
sp_defaultlanguage | 變更預設語言 | @loginame, @language |
sp_grantlogin | 授權 Windows 使用者/群組登入 | @loginame |
sp_revokelogin | 撤銷 Windows 登入授權 | @loginame |
sp_denylogin | 明確拒絕 Windows 使用者/群組 | @loginame |
sp_helplogins | 列出登入資訊 | [@loginame] |
-- 建立 SQL 登入,指定 SID 利於跨伺服器同步
EXEC sp_addlogin 'app_user', 'P@ssw0rd!', 'AppDB', 'us_english', 0x0123456789ABCDEF
-- 修改密碼(需舊密碼)
EXEC sp_password 'P@ssw0rd!', 'N3wP@ss!', 'app_user'
-- 授權 Windows 群組
EXEC sp_grantlogin 'CORP\DB_ReadOnly'
-- 查詢所有登入
EXEC sp_helplogins
sa、目前連線的登入、擁有資料庫使用者對應的登入(需先在各資料庫 sp_dropuser)。#、## 開頭。sysadmin 或 securityadmin 固定伺服器角色成員執行。CHECK_POLICY、CHECK_EXPIRATION 對應 Windows 密碼策略;2000 版需自行實作。Windows 登入若從 AD/本機移除,對應的 SQL 登入仍殘留於 syslogins,成為「孤立登入」。特徵:同名無法重建、SID 不同導致權限遺失。
EXEC sp_revokelogin 'DOMAIN\OldUser'(Windows)或 sp_droplogin(SQL)。EXEC sp_change_users_login 'Auto_Fix', 'UserName', NULL, 'NewLogin'。sp_helplogins 異常帳戶。結合圖形化工具的直觀性與 T-SQL 的自動化能力,即可建立安全、可審計、易維運的 SQL Server 登入管理體系。