萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

SQL Server "Login failed for user 'sa'" 錯誤完整解決方案:三大場景全覆蓋

場景一:認證模式為「僅 Windows」(最常見)

現象


Login failed for user 'sa'. Reason: Not associated with a trusted SQL Server connection

原因

SQL Server 安全性設置為 "Windows Authentication Mode",拒絕 SQL 登錄。

解決(SSMS 圖形化)

  1. 企業管理器 / SSMS → 服務器右鍵 → 屬性
  2. 安全性選項卡 → 服務器身份驗證 → 選 SQL Server 和 Windows
  3. 確定 → 提示重啟服務 → **是**

場景二:SQL Server 2008 Express 剛安裝完成

現象

SA 登錄失敗,雖然啟用了 SA 賬號但仍報錯。

根因

Express 默認註冊表 LoginMode = 1(Windows Authentication),需改為 2(Mixed)。

解決(注冊表 + 服務重啟)

  1. regedit 定位:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQLServer\LoginMode
  2. 修改值:1 → 2(十進制)
  3. 重啟 SQL Server 服務(MSSQL$SQLEXPRESS)
⚠️ 必須重啟服務,否則注冊表修改不生效

場景三:SQL Server 2005 域帳戶服務 + 密碼策略導致 18456 錯誤

觸發條件(需同時滿足)

  • 使用 SQL 登錄(如 sa)連接
  • SQL Server 服務啟動帳戶為**域帳戶**
  • 登錄啟用了 CHECK_POLICY = ON(默認)
  • 域控制器上服務帳戶被**鎖定或禁用**

錯誤日誌特徵


Error: 18456, Severity: 14, State: 10.

解決方案

  1. 域控解鎖/啟用服務帳戶
  2. 或修改登錄關閉密碼策略檢查(不推薦降低安全性):
    ALTER LOGIN sa WITH CHECK_POLICY = OFF;
  3. 或變更服務啟動帳戶為本地系統/本地服務/專用服務帳戶

補丁方案

Microsoft 提供熱修復補丁(需 SP1),詳見 KB 文檔,建議優先按上述配置修復。

通用診斷清單

檢查項命令/位置正常狀態
認證模式SSMS 服務器屬性 → 安全性SQL Server 和 Windows
SA 狀態安全性 → 登錄名 → sa → 狀態啟用
SA 密碼同上 → 常規已設置、符合策略
TCP/IP配置管理器 → 網絡配置已啟用、Port 1433
防火牆入站規則 / telnet放行 1433
服務狀態services.msc運行中
錯誤日誌...MSSQL\Log\ERRORLOG無 18456/17892/40 錯誤

連接字符串最佳實踐


-- 標準
Server=myServer\Instance;Database=myDB;User ID=sa;Password=myPass;Encrypt=False;TrustServerCertificate=True;

-- 應用層連接池
Max Pool Size=100;Connection Timeout=30;
copyright © 萬盛學電腦網 all rights reserved