Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การแก้ไขปัญหา >> ข้อผิดพลาด Windows

แก้ไขข้อผิดพลาด Login Failed Microsoft SQL Server Error: 18456

คุณอาจเจอ SQL Server Error 18456 หาก Server ไม่สามารถยืนยันตัวตนการเชื่อมต่อได้ สาเหตุอาจมาจาก: ไม่มีสิทธิ์ Administrator ให้ SQL Server หรือ TCP/IP Protocol ถูก Disable ใน SQL Server Settings

ปัญหาเกิดเมื่อพยายามเชื่อมต่อ SQL Server (Local หรือ Remote) แล้วเจอ Error 18456 (พร้อม State ต่างๆ)

แก้ไขข้อผิดพลาด Login Failed Microsoft SQL Server Error: 18456

คุณสามารถแก้ Error 18456 ได้ด้วยวิธีด้านล่าง แต่ก่อนอื่น เช็คว่า Restart Server, Client Computer, และ Networking Computers ช่วยได้ไหม และแน่ใจว่าพิมพ์ Username และ Password ถูกต้อง (อย่า Copy-Paste Address) เช็คว่า Database Name ถูกต้อง (ไม่มี Typo) และ Update Config File ตามนั้น เช็คว่า Unlock Account ด้วย Query ALTER LOGIN WITH PASSWORD= UNLOCK ช่วยได้ไหม หากเห็น Error ใน SQL Error Log ตรวจสอบว่า SQL Server ไม่ได้ถูกโจมตี สุดท้าย เช็คว่า นาฬิกา Server และ Client ตั้งเวลาถูกต้อง

เปิด SQL Server เป็น Administrator และ Disable UAC บน Server

อาจเจอ Error 18456 ถ้า SQL Server ไม่มี Elevated Permissions การเปิดเป็น Administrator (หรือ Disable UAC บน Server) อาจช่วยได้

เปิด SQL Server เป็น Administrator

  1. กด Windows พิมพ์ SQL Server Management Studio
  2. คลิกขวา SMSS เลือก Run as Administratorแก้ไขข้อผิดพลาด Login Failed Microsoft SQL Server Error: 18456
  3. คลิก Yes (ถ้ามี UAC Prompt) เช็คว่า SQL Server หาย Error 18456 แล้ว
  4. ถ้ายังไม่หาย ลอง Disable UAC บน Server Machine ดู

เปิด SQL Server ใน Single User Mode

  1. กด Windows เปิด SQL Server Configuration Manager
  2. คลิกขวา SQL Server Service (ในแท็บ SQL Server Services) เลือก Propertiesแก้ไขข้อผิดพลาด Login Failed Microsoft SQL Server Error: 18456
  3. ไปแท็บ Startup Parameters ในกล่อง Specify a Startup Parameter พิมพ์:
    -m
  4. คลิก Add Applyแก้ไขข้อผิดพลาด Login Failed Microsoft SQL Server Error: 18456
  5. คลิกขวา SQL Server Service เลือก Restartแก้ไขข้อผิดพลาด Login Failed Microsoft SQL Server Error: 18456
  6. กด Windows พิมพ์ SQL Server Management Studio คลิกขวา SMSS Run as Administrator
  7. เช็คว่าเชื่อมต่อ SQL Server เป็น Admin ได้ไหม
  8. ถ้าได้ ให้ Add Domain Account ให้ SQL Server และ Assign ให้เป็น SysAdmin Role
  9. กลับไป SQL Server Configuration Manager Remove -m Parameter ใน Startup Parameters
  10. Restart SQL Server Service (ขั้น 3) เช็คว่า SQL Server ทำงานปกติ

ถ้ายังมีปัญหา เช็คว่า Startup Parameters หรือ Path Details Config ถูกต้อง ถ้ายังเป็นอยู่ ตรวจสอบว่า User Account มี Required Permissions ให้ Database/Reporting Services แล้วเช็คอีกครั้ง

Enable TCP/IP Protocol ใน Server Configuration Manager

Error 18456 หมายถึง Server ไม่สามารถ Authenticate Connection ได้ อาจเกิดจาก TCP/IP Protocol ที่จำเป็นสำหรับเข้าถึง Database บน Network ถูก Disable ใน Server Configuration Manager การ Enable TCP/IP อาจช่วยได้

  1. กด Windows ขยาย Microsoft SQL Server พร้อมปี เช่น 2008 (อาจต้อง Scroll หา)
  2. เปิด SQL Server Configuration Manager คลิก Yes (ถ้ามี UAC)
  3. ขยาย SQL Server Network Configuration เลือก Protocols for (Server/Database Name) ใน Page ซ้าย
  4. ใน Page ขวา Double-click TCP/IP เลือก Yes ใน Dropdown Enabledแก้ไขข้อผิดพลาด Login Failed Microsoft SQL Server Error: 18456
  5. Apply การเปลี่ยนแปลง กด Windowsแก้ไขข้อผิดพลาด Login Failed Microsoft SQL Server Error: 18456
  6. พิมพ์ Services, คลิกขวา Result เลือก Run as Administratorแก้ไขข้อผิดพลาด Login Failed Microsoft SQL Server Error: 18456
  7. คลิกขวา SQL Server (กับชื่อ Server) เลือก Restartแก้ไขข้อผิดพลาด Login Failed Microsoft SQL Server Error: 18456
  8. เช็คว่า SQL Server หาย Error 18456 แล้ว

ถ้ายังไม่ได้ ตรวจสอบว่าเชื่อมต่อ Port ที่ถูกต้อง ของ SQL Server (โดยเฉพาะถ้าใช้ Multi-Server Environment)

เปลี่ยน Authentication Mode ของ SQL Server

SQL Server อาจแสดง Error 18456 ถ้า Authentication Method ไม่ได้ Config ถูกต้อง (เช่น Login ด้วย SQL Server Authentication แต่ Server ตั้งค่าเป็น Windows Authentication) การเปลี่ยน Authentication Method อาจช่วยได้ ก่อนหน้านั้น ตรวจสอบว่า Status Login ของ User ปัจจุบัน (เช่น SA) เป็น Enabled

  1. ใน Object Explorer ของ SSMS Right-click Server เลือก Properties
  2. Page ซ้ายเลือก Security Page ขวาเลือก SQL Server and Windows Authentication (หรือกลับกัน)แก้ไขข้อผิดพลาด Login Failed Microsoft SQL Server Error: 18456
  3. Apply ใน Object Explorer Right-click Server
  4. เลือก Restart Restart เสร็จ เช็คว่าเชื่อมต่อ Database ได้โดยไม่มี Error 18456

ถ้า Login ไม่ได้ ลอง Install MS Power Tools รันคำสั่งใน Elevated Command:

psexec.exe -i -s ssms.exe

หลังจากนั้น ใช้ Installation Account ของ SQL ทำการเปลี่ยนแปลง และแน่ใจว่า SA Account ไม่ได้ถูก Disable

Enable SA Account และ Reset รหัสผ่าน

ถ้าเชื่อมต่อ SQL Server ไม่ได้ การ Enable SA Account และ Reset Password อาจช่วยได้

  1. เปิด Microsoft SQL Server Management Studio (อาจต้องใช้ Domain Admin Account) ขยาย Security
  2. Double-click Logins เปิด SAแก้ไขข้อผิดพลาด Login Failed Microsoft SQL Server Error: 18456
  3. ใส่ New Password ยืนยันรหัสผ่าน (ใช้ Strong Password)
  4. ไปแท็บ Server Roles ติ๊ก Role ดังนี้:
    Public Sysadmin
    แก้ไขข้อผิดพลาด Login Failed Microsoft SQL Server Error: 18456
  5. ไปแท็บ Status Page ขวาเลือก Enabled (ใต้ Login)แก้ไขข้อผิดพลาด Login Failed Microsoft SQL Server Error: 18456
  6. Apply กด Windows
  7. พิมพ์ Services คลิกขวา
  8. เลือก Run as Administrator ไปที่ SQL Server Service
  9. คลิกขวา เลือก Restart
  10. Service Restart เสร็จ เช็คว่า Error 18456 หายแล้ว

สร้าง Login ใหม่ และ Restart Reporting Services

ถ้าใช้ Account ไหนไม่ได้เชื่อมต่อ Database การสร้าง Login ใหม่และ Restart Reporting Services อาจช่วยได้

  1. เปิด Microsoft SQL Server Management Studio ขยาย Security Tab
  2. ขยาย Logins คลิกขวา เลือก New Login
  3. ใส่ Credentials (ใน Login Name เลือก Computer Account) ถ้าใช้ SQL Server Authenticationแก้ไขข้อผิดพลาด Login Failed Microsoft SQL Server Error: 18456
  4. ติ๊กถอด "User Must Change Password at Next Login" เลือก Database
  5. ไปแท็บ Server Roles เลือก Public Role
  6. แท็บ User Mapping ติ๊ก Choose Database เลือก db_ownerแก้ไขข้อผิดพลาด Login Failed Microsoft SQL Server Error: 18456
  7. Apply กด Windows
  8. พิมพ์ Services คลิกขวา Result เลือก Run as Administrator
  9. คลิกขวา SQL Server Reporting Service เลือก Restartแก้ไขข้อผิดพลาด Login Failed Microsoft SQL Server Error: 18456
  10. Reconnect ไป Database เช็คว่า SQL Server หาย Error 18456 แล้ว

ถ้าได้ ให้แน่ใจว่าสร้าง User ใน BUILTIN\administrators แล้วใช้ User นั้นจัดการ SQL Server ได้ หาก Restore Database จาก Backup ควร Remove และ Re-add Users เพื่อล้าง Entry เก่า ถ้าอยากรัน SQL Server เป็น User อื่น ให้พิมพ์ Microsoft SQL Server ใน Windows Search Shift+Right-click SQL Server เลือก Run as a Different User สุดท้าย เช็คว่าใช้ Azure Data Studio กับ SQL Server แก้ปัญหาได้ไหม