首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

SQL Server 2008 新建登錄名無法連接:錯誤 18456 的排查與修復

     編輯:程式設計綜合問答

在 SQL Server 2008 中創建 SQL Server 驗證登錄名後,連接提示 錯誤 18456: Login failed for user 'xxx'。常見原因:**默認數據庫未設置、登錄名未映射用戶、認證模式未切換、或密碼策略導致鎖定**。

排查清單

  1. 設置默認數據庫:
    • SSMS → 安全性 → 登錄名 → 右鍵屬性 → 常規 → 默認數據庫 選擇有效庫 (如 master 或業務庫)。
    • 若默認庫被刪除/離線,登錄直接失敗。
  2. 映射用戶權限:
    • 登錄名屬性 → 用戶映射 → 勾選目標數據庫 → 下方 数据库角色成员身份 勾選 db_owner / db_datareader / db_datawriter 等。
    • 無映射則無法訪問任何用戶數據庫。
  3. 確認認證模式:
    • 實例右鍵屬性 → 安全性 → SQL Server 和 Windows 身份驗證模式 → 確定 → 必須重啟服務 生效。
  4. 檢查密碼策略/狀態:
    • 登錄名屬性 → 狀態 → 登錄 選 已啟用、連接到數據庫引擎 選 授予。
    • 若密碼過期/被鎖定,取消勾選 強制執行密碼策略 / 強制執行密碼過期 (開發環境)。
  5. 網絡協議啟用:
    • Configuration Manager → Protocols for MSSQLSERVER → TCP/IP、Named Pipes 均啟用,TCP/IP 屬性中 IPAll 端口設置為 1433 (或自定義)。

錯誤狀態碼細分 (Error Log 中)

State含義
1錯誤信息通用,無具體含義
2, 5用戶 ID 無效 / 登錄名不存在
6嘗試使用 Windows 登錄名進行 SQL 驗證
7登錄被禁用 / 密碼錯誤
8密碼錯誤
9密碼無效 (過期/不符合策略)
11, 12Windows 驗證失敗 / 域控問題
18密碼過期需修改

快速修復腳本 (T-SQL)

-- 1. 確認認證模式 (需重啟)
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE',
    N'Software\Microsoft\MSSQLServer\MSSQLServer',
    N'LoginMode', REG_DWORD, 2;  -- 2 = 混合模式

-- 2. 創建登錄並映射用戶
CREATE LOGIN [new_user] WITH PASSWORD = 'StrongP@ssw0rd',
    DEFAULT_DATABASE = [master],
    CHECK_EXPIRATION = OFF, CHECK_POLICY = OFF;

USE [YourDB];
CREATE USER [new_user] FOR LOGIN [new_user];
ALTER ROLE [db_owner] ADD MEMBER [new_user];

參考圖文教程

SQL Server 2008 登錄名創建與權限配置圖解

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