首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 誤刪 Windows 登入帳號導致無法登入——單一使用者模式修復實戰

     編輯:關於SqlServer

災難場景:
- 唯一的 sysadmin 是 Windows 群組/帳號。
- sa 停用、混合模式未啟用。
- 該 Windows 帳號被誤刪,導致完全無法登入 SQL Server。

修復核心思路:單一使用者模式啟動 + 重建 sysadmin

  1. 停止 SQL Server 服務:
    net stop MSSQLSERVER (具名實例用 net stop MSSQL$INSTNAME)
  2. 以單一使用者模式啟動:
    net start MSSQLSERVER /m"SQLCMD"
    參數 /m"SQLCMD" 限制僅允許 sqlcmd 連線,防止其他應用搶佔唯一連線。
  3. 以本機 Administrators 群組成員身分開啟 cmd,執行:
    sqlcmd -S . -E (Windows 驗證,本機管理員在單一使用者模式自動映射為 sysadmin)
  4. 在 sqlcmd 內執行 T-SQL 重建登入:
-- 啟用 sa 並設定強密碼
ALTER LOGIN sa ENABLE;
ALTER LOGIN sa WITH PASSWORD = 'ComplexP@ssw0rd!';

-- 或新增 Windows 帳號並加入 sysadmin
CREATE LOGIN [DOMAIN\NewAdmin] FROM WINDOWS;
ALTER SERVER ROLE sysadmin ADD MEMBER [DOMAIN\NewAdmin];

-- 確認
SELECT name, sysadmin FROM sys.syslogins WHERE sysadmin = 1;
GO
單一使用者模式啟動命令 sqlcmd 連線畫面 災難場景示意 sa 停用狀態 無 sysadmin 登入

重啟恢復正常模式

  1. 退出 sqlcmd (EXIT)。
  2. net stop MSSQLSERVER 再 net start MSSQLSERVER (不加 /m 參數)。
  3. 使用新建立的 sa 或 Windows 帳號正常登入 SSMS。

預防措施

  • 永遠保留至少兩個 sysadmin:一個 sa (強密碼、啟用)、一個 Windows 群組 (如 DOMAIN\SQLAdmins)。
  • 啟用混合驗證模式,作為備用入口。
  • 建立 緊急存取程序文件,包含單一使用者模式啟動命令、sqlcmd 腳本,存放於離線安全位置。
  • 稽核 SERVER_ROLE_MEMBER_CHANGE_GROUP 事件,監控 sysadmin 成員變更。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved