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

SQL Server 2008 解決「NT AUTHORITY\IUSR 登入失敗」與密碼原則鎖定問題

     編輯:SQL Server 2008

ASP/ASP.NET 應用程式使用 NT AUTHORITY\IUSR (IIS 匿名存取身分) 連線 SQL Server 2008 時常遇到「登入失敗」。本文從連接字串、SSMS 建立登入/使用者對應、密碼原則鎖定 (MUST_CHANGE/CHECK_POLICY) 三個層面系統排查並給出解決方案。

一、確認連接字串無誤

SQL Server 2000/2005/2008 連接字串通用,常見兩種 Provider:

' SQLOLEDB (OLE DB)
ConnStr = "Provider=SQLOLEDB;Data Source=(local);UID=用戶;PWD=密碼;Database=資料庫"

' SQL Server ODBC
ConnStr = "Driver={SQL Server};Server=(local);UID=用戶;PWD=密碼;Database=資料庫"
  • Data Source 可用 (local)、127.0.0.1、.、實際電腦名或 IP,Port。
  • 確認防火牆開放 TCP 1433 (預設執行個體) 或對應動態連接埠 (命名執行個體需啟用 SQL Browser 服務)。

二、在 SSMS 建立對應的 SQL 登入與資料庫使用者

  1. 展開 安全性 > 登入名,右鍵 新增登入名。
  2. 一般 頁籤:
    • 登入名:輸入 NT AUTHORITY\IUSR (若為 Windows 驗證) 或建立 SQL 登入 (如 WebUser)。
    • 若為 SQL 登入:設定密碼,**建議暫時取消勾選「強制執行密碼原則」與「強制執行密碼到期」**,避免後續鎖定問題。
  3. 使用者對應 頁籤:
    • 勾選目標資料庫。
    • 下方「資料庫角色成員資格」勾選 db_datareader (唯讀) 或 db_datawriter (讀寫) 等最小權限角色。
  4. 點擊 確定 完成建立。

新增登入一般頁籤

新增登入使用者對應

資料庫使用者設定

三、密碼原則鎖定問題 (錯誤 15128) 完整解決

現象:建立 SQL 登入時勾選「強制執行密碼原則」與「使用者必須在下次登入時變更密碼」(MUST_CHANGE=ON)。後續想取消原則勾選,報錯:
當 MUST_CHANGE 為 ON 時,不能將 CHECK_POLICY 和 CHECK_EXPIRATION 選項設為 OFF。

根本原因

MUST_CHANGE = ON 強制要求下次登入變更密碼,此狀態下 CHECK_POLICY 與 CHECK_EXPIRATION 必須保持啟用,否則無法驗證新密碼合規性。

解決方法 A:T-SQL 重設密碼 (推薦,保留登入與權限)

  1. 以 sa 開啟新查詢。
  2. 執行:
ALTER LOGIN [登入名] WITH PASSWORD = N'新強密碼';
  1. 執行後 MUST_CHANGE 自動變為 OFF,即可在屬性視窗自由取消勾選原則選項。

解決方法 B:刪除重建登入 (最快,但會清除權限對應)

  1. SSMS 中右鍵登入 → 刪除。
  2. 重新建立登入,依需求設定原則選項 (建立時即決定是否勾選 MUST_CHANGE)。
注意:刪除登入會同步移除對應的資料庫使用者與權限,請確認影響範圍。

為什麼使用者無法自行登入改密碼?

SQL Server 不支援互動式「登入時強制變更密碼」提示。MUST_CHANGE=ON 時,用戶端嘗試登入會直接收到錯誤 18488 並中斷連線,無法進入變更密碼流程。

四、綜合排查清單

檢查項目正確設定
連接字串 ProviderSQLOLEDB 或 SQL Server ODBC
Data Source(local) / 127.0.0.1 / 電腦名 / IP,Port
SQL 登入是否存在SSMS 安全性 → 登入名 中已建立
資料庫使用者對應目標資料庫已勾選,角色給予最小權限 (db_datareader 等)
密碼原則鎖定若遇 15128,用 ALTER LOGIN 重設密碼解除 MUST_CHANGE
防火牆/TCP 1433遠端連線需開啟防火牆規則
SQL Browser 服務命名執行個體需啟用

依序驗證上述項目,即可解決 NT AUTHORITY\IUSR 或一般 SQL 登入的連線失敗與密碼原則鎖定問題。

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