首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

SQL Server sa 密碼複雜度驗證失敗解決方案:策略衝突與強制修改實戰

     編輯:MySQL 資料庫相關知識

在 SQL Server 啟用 sa 帳號並設定密碼時,常遇到「密碼有效性驗證失敗,密碼太短不符合 Windows 策略要求」錯誤(訊息 15116)。本文解析背後的群組原則衝突機制,提供立即生效的解決步驟。

錯誤重現場景

-- 嘗試設定簡單密碼並啟用 sa
EXEC sp_password 'sa', null, 'sa';  -- 舊密碼為 null(首次設定)
ALTER LOGIN sa ENABLE;

-- 報錯:
-- 訊息 15116,層級 16,狀態 1
-- 密碼有效性驗證失敗。該密碼太短,不符合 Windows 策略要求。

根因分析

  • SQL Server 的 CHECK_POLICY 選項預設開啟,強制密碼遵循 Windows 本地/網域群組原則(長度、複雜度、歷史記錄等)。
  • 若主機加入網域,**網域原則優先於本地原則**,導致即使本地放寬策略仍無效。
  • 預設原則通常要求:最小 8 字元、含大小寫/數字/特殊符號、不含帳號名稱等。

解決方案:設定符合策略的強密碼

-- 使用符合複雜度要求的密碼(範例:大小寫+數字+符號,長度 10+)
EXEC sp_password 'sa', 'Uiop_098Mn', 'sa';
ALTER LOGIN sa ENABLE;
密碼建議: 至少 12 字元、混合四類字元、避免字典詞、定期輪換、存放於密碼管理器。

進階選項:暫時停用密碼策略檢查(不建議生產環境)

-- 僅適用測試/開發環境,生產環境嚴禁
ALTER LOGIN sa WITH CHECK_POLICY = OFF;
EXEC sp_password 'sa', 'simple', 'sa';
ALTER LOGIN sa ENABLE;
-- 用畢後務必開啟
ALTER LOGIN sa WITH CHECK_POLICY = ON;

驗證步驟

  1. SSMS 以 Windows 驗證登入 → 右鍵伺服器 → 屬性 → 安全性 → 確認為「SQL Server 和 Windows 驗證模式」。
  2. 執行上述 sp_password + ALTER LOGIN。
  3. 嘗試以 sa / 新密碼 登入 SSMS,確認成功。

最佳實務

  • 生產環境 **永不關閉 CHECK_POLICY**,改用強密碼滿足策略。
  • 建立專用低權限應用程式帳號,避免直接使用 sa。
  • 定期稽核登入失敗記錄,偵測暴力破解嘗試。

理解 Windows 密碼策略對 SQL Server 登入的強制影響,並採用符合規範的強密碼,即可快速解決 15116 錯誤,同時維持資安防護等級。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved