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

SQL Server 18452 錯誤解決:Windows 驗證模式下無法使用 SQL 登入

     編輯:關於SqlServer

錯誤現象

無法連接到伺服器
伺服器:訊息 18452,層級 16,狀態 1
[Microsoft][ODBC SQL Server Driver][SQL Server]
使用者 'sa' 登入失敗。原因:未與信任 SQL Server 連接相關聯

根本原因

SQL Server 執行個體設定為 僅 Windows 驗證模式,拒絕 SQL Server 驗證(如 sa 帳號)連線。

解決方案:啟用混合模式驗證

方法一:SSMS 圖形介面(SQL 2005/2008/2012/2014/2016/2017/2019)

  1. 開啟 SQL Server Management Studio,連線到目標執行個體
  2. 物件總管中右鍵伺服器名稱 → 選擇「屬性」
  3. 左側選擇「安全性」頁面
  4. 伺服器驗證 區域選擇:「SQL Server 和 Windows 驗證模式」
  5. 點擊「確定」
  6. 關鍵步驟:重新啟動 SQL Server 服務(MSSQLSERVER 或具名執行個體)

方法二:T-SQL 命令(需已有 Windows 管理員連線)

-- 檢視目前驗證模式
EXEC xp_instance_regread 
    N'HKEY_LOCAL_MACHINE',
    N'Software\Microsoft\MSSQLServer\MSSQLServer',
    N'LoginMode';
-- 返回 1 = Windows only, 2 = Mixed mode

-- 修改為混合模式
EXEC xp_instance_regwrite 
    N'HKEY_LOCAL_MACHINE',
    N'Software\Microsoft\MSSQLServer\MSSQLServer',
    N'LoginMode',
    REG_DWORD, 2;
-- 之後必須重啟服務生效

補充檢查:sa 帳號是否啟用

即使啟用混合模式,sa 預設可能是停用狀態:

  1. SSMS → 安全性 → 登入 → 右鍵 sa → 內容
  2. 「狀態」頁面 → 「登入」區域選擇「啟用」
  3. 「一般」頁面 → 設定強密碼

或 T-SQL:

ALTER LOGIN sa ENABLE;
ALTER LOGIN sa WITH PASSWORD = 'ComplexPass123!';

SQL Server 2005 Express 特別說明

Express 版預設執行個體名為 SQLEXPRESS,連線字串需指定:

Server=.\SQLEXPRESS;Database=MyDB;User Id=sa;Password=xxx;
-- 或
Server=(local)\SQLEXPRESS;...

驗證修復成功

-- 使用 SQL 驗證測試連線
sqlcmd -S .\INSTANCE -U sa -P 'ComplexPass123!' -Q "SELECT @@VERSION"
-- 或 SSMS 選擇「SQL Server 驗證」輸入 sa 帳密連線

安全性提醒

生產環境建議:保持僅 Windows 驗證,應用程式使用網域服務帳號或受控服務帳號(gMSA)連線。若必須啟用混合模式,請確保 sa 使用極高複雜度密碼、定期輪換、限制連線 IP 範圍。

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