ไม่สามารถล็อกอินเข้าสู่ SQL Server + SQL Server Authentication + Error: 18456


121

ฉันได้สร้างบัญชีล็อกอินบนเซิร์ฟเวอร์ localhost \ sql2008 ของฉันแล้ว (เช่น User123)

แมปกับฐานข้อมูล (ค่าเริ่มต้น)

โหมดการรับรองความถูกต้องบน SQL Server ถูกตั้งค่าเป็นทั้ง (Windows และ SQL)

แต่การเข้าสู่ระบบ SQL Server ล้มเหลวด้วยข้อความต่อไปนี้ (สำหรับ User123)

หมายเหตุ: ตรวจสอบหลายครั้งว่า UserName / Password พิมพ์ถูกต้อง

รายละเอียดผิดพลาด:

การเข้าสู่ระบบล้มเหลวสำหรับผู้ใช้ 'User123' (Net.SqlClient Data Provider)

ชื่อเซิร์ฟเวอร์: localhost \ sql2008 หมายเลขข้อผิดพลาด: 18456 ความรุนแรง: 14 สถานะ: 1 หมายเลขบรรทัด: 65536

โปรดช่วยในเรื่องนี้


1
ทดสอบการเข้าถึงการตรวจสอบสิทธิ์ sql และ windows ผ่าน SqlServer Management Console สำหรับผู้ใช้และดูว่าคุณสามารถเข้าถึงด้วยบัญชีข้างต้นได้หรือไม่ คุณใช้ผู้ให้บริการข้อมูลและสตริงการเชื่อมต่อใด
Joe Pitz

1
กำลังพยายามเข้าสู่ระบบใน SSMS และเกิดข้อผิดพลาดขึ้น
Sreedhar

1
คุณสามารถเข้าสู่ระบบด้วยบัญชีผู้ดูแลระบบ?
Joe Pitz

เข้าสู่ระบบในฐานะผู้ดูแลระบบและตรวจสอบบันทึกเหตุการณ์ของคุณ สาเหตุของข้อผิดพลาดควรระบุไว้ที่นั่น ดูที่โฟลเดอร์การจัดการ
Joe Pitz

ทางเลือกที่เหมาะกับฉันคือstackoverflow.com/questions/28090747/…
Mark Schultheiss

คำตอบ:


49

โดยค่าเริ่มต้นข้อความแสดงข้อผิดพลาดในการเข้าสู่ระบบล้มเหลวคืออะไรนอกจากเซิร์ฟเวอร์ปฏิเสธการเชื่อมต่อผู้ใช้ไคลเอ็นต์เนื่องจากข้อมูลรับรองการเข้าสู่ระบบไม่ตรงกัน งานแรกที่คุณอาจตรวจสอบคือดูว่าผู้ใช้มีสิทธิ์ที่เกี่ยวข้องกับอินสแตนซ์ SQL Server และฐานข้อมูลที่เกี่ยวข้องด้วยหรือไม่นั่นก็ดี เห็นได้ชัดว่าหากไม่ได้ตั้งค่า prvileges ที่จำเป็นคุณต้องแก้ไขปัญหานั้นโดยให้สิทธิ์ที่เกี่ยวข้องสำหรับการเข้าสู่ระบบของผู้ใช้นั้น

แม้ว่าผู้ใช้รายนั้นมีการให้สิทธิ์ที่เกี่ยวข้องบนฐานข้อมูลและเซิร์ฟเวอร์หากเซิร์ฟเวอร์พบปัญหาเกี่ยวกับข้อมูลรับรองสำหรับการเข้าสู่ระบบนั้นก็จะป้องกันในการให้สิทธิ์การตรวจสอบสิทธิ์กลับไปยัง SQL Server ไคลเอนต์จะได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:

Msg 18456, Level 14, State 1, Server <ServerName>, Line 1
Login failed for user '<Name>'

ตกลงตอนนี้ว่าอย่างไรโดยดูข้อความแสดงข้อผิดพลาดที่คุณรู้สึกว่านี่ไม่ใช่คำอธิบายที่จะเข้าใจระดับและสถานะ ตามค่าเริ่มต้นข้อผิดพลาดของระบบปฏิบัติการจะแสดง 'สถานะ' เป็น 1 โดยไม่คำนึงถึงลักษณะของปัญหาในการตรวจสอบสิทธิ์การเข้าสู่ระบบ ดังนั้นในการตรวจสอบเพิ่มเติมคุณต้องดูบันทึกข้อผิดพลาดของอินสแตนซ์ SQL Server ที่เกี่ยวข้องด้วยสำหรับข้อมูลเพิ่มเติมเกี่ยวกับความรุนแรงและสถานะของข้อผิดพลาดนี้ คุณอาจดูรายการที่เกี่ยวข้องในบันทึกเป็น:

2007-05-17 00:12:00.34 Logon     Error: 18456, Severity: 14, State: 8.
or

2007-05-17 00:12:00.34 Logon     Login failed for user '<user name>'.

ตามที่กำหนดไว้ข้างต้นคอลัมน์ความรุนแรงและสถานะของข้อผิดพลาดเป็นกุญแจสำคัญในการค้นหาการสะท้อนที่ถูกต้องสำหรับต้นตอของปัญหา ในข้อผิดพลาดด้านบนหมายเลข 8 สำหรับสถานะบ่งชี้ว่าการรับรองความถูกต้องล้มเหลวเนื่องจากรหัสผ่านไม่ตรงกัน หนังสือออนไลน์อ้างถึง: โดยค่าเริ่มต้นข้อความที่ผู้ใช้กำหนดเองที่มีความรุนแรงต่ำกว่า 19 จะไม่ถูกส่งไปยังบันทึกแอปพลิเคชัน Microsoft Windows เมื่อเกิดขึ้น ข้อความที่ผู้ใช้กำหนดเองที่มีความรุนแรงต่ำกว่า 19 ดังนั้นจึงไม่ทริกเกอร์การแจ้งเตือนของ SQL Server Agent

Sung Lee ผู้จัดการโปรแกรมใน SQL Server Protocols (Dev.team) ได้ระบุข้อมูลเพิ่มเติมเกี่ยวกับคำอธิบายสถานะข้อผิดพลาด: สถานะข้อผิดพลาดทั่วไปและคำอธิบายมีอยู่ในตารางต่อไปนี้:

ERROR STATE       ERROR DESCRIPTION
------------------------------------------------------------------------------
2 and 5           Invalid userid
6                 Attempt to use a Windows login name with SQL Authentication
7                 Login disabled and password mismatch
8                 Password mismatch
9                 Invalid password
11 and 12         Valid login but server access failure
13                SQL Server service paused
18                Change password required


Well I'm not finished yet, what would you do in case of error:

2007-05-17 00:12:00.34 Logon     Login failed for user '<user name>'.

คุณจะเห็นว่าไม่มีความรุนแรงหรือระดับสถานะที่กำหนดจากบันทึกข้อผิดพลาดของอินสแตนซ์ SQL Server นั้น ดังนั้นตัวเลือกการแก้ไขปัญหาถัดไปคือการดูบันทึกความปลอดภัยของ Event Viewer [แก้ไขเนื่องจากภาพหน้าจอหายไป แต่คุณได้รับไฟล์

ความคิดดูในบันทึกเหตุการณ์สำหรับเหตุการณ์ที่น่าสนใจ]


1
ขอบคุณจะคอยดูว่ามันเป็นอย่างไร
Sreedhar

1
ลิงก์ตายโปรดพิจารณาแก้ไข
Chris Hayes

10
ควรเลือกคำตอบที่เหนือกว่าด้านล่างคำตอบนี้ไม่ใช่คำตอบนี้
void.pointer

4
อ่านโพสต์ด้านล่าง
Levi Fuller

6
@ void.pointer OP ได้กำหนดไว้แล้วว่า "Authentication Mode บน SQL Server ถูกตั้งค่าเป็นทั้ง (Windows และ SQL)" ดังนั้นโพสต์ด้านล่างจึงไม่มีความเกี่ยวข้องกับคำถามนี้
Manachi

336

คุณต้องเปิดใช้งานการรับรองความถูกต้องของเซิร์ฟเวอร์ SQL:

  1. ใน Object Explorer คลิกขวาที่เซิร์ฟเวอร์และคลิกที่ "Properties"

ไดอะล็อกคุณสมบัติ DBMS

  1. ในหน้าต่าง "Server Properties" คลิกที่ "Security" ในรายการเพจทางด้านซ้าย ในส่วน "การตรวจสอบความถูกต้องของเซิร์ฟเวอร์" ให้เลือกตัวเลือกตัวเลือกตัวเลือก "โหมดเซิร์ฟเวอร์ SQL และ Windows Authentication"

กล่องโต้ตอบการตรวจสอบสิทธิ์เซิร์ฟเวอร์ SQL

  1. เริ่มบริการ SQLEXPRESS ใหม่

29
โอ้ขอบคุณล้านครั้ง ส่วนใหญ่สำหรับคำว่ารีสตาร์ทด้านบน!
Magnus Smith

4
ฉันรู้ว่ามันเก่า แต่มันช่วยชีวิตฉันได้โดยสิ้นเชิง ขอบคุณ Prateek ชื่นชมมัน. ต้องรีสตาร์ท!
Levi Fuller

3
เหตุใดจึงควรใช้งานได้หาก OP ระบุอย่างชัดเจนว่า "โหมดการรับรองความถูกต้องบน SQL Server ถูกตั้งค่าเป็นทั้ง (Windows และ SQL)"
Tim Schmelter

4
คำตอบนี้ซ้ำซ้อนและไม่มีประโยชน์สำหรับคำถาม OP ได้กำหนดไว้แล้วว่า "โหมดการรับรองความถูกต้องบน SQL Server ถูกตั้งค่าเป็นทั้ง (Windows และ SQL)"
Manachi

1
สุดยอดมาก .. !! ขอบคุณ PrateekSaluja
Amin Sayed

44

ฉันมีปัญหาเดียวกันนี้ แต่ของฉันเป็นเพราะฉันไม่ได้ตั้งค่าการรับรองความถูกต้องของเซิร์ฟเวอร์เป็น "SQL Server and Windows Authentication mode" (ซึ่งคุณมี) ฉันแค่อยากจะพูดถึงที่นี่ในกรณีที่มีคนพลาดในคำถามของคุณ

คุณสามารถเข้าถึงได้โดย

  • คลิกขวาที่อินสแตนซ์ (IE SQLServer2008)
  • เลือก "คุณสมบัติ"
  • เลือกตัวเลือก "ความปลอดภัย"
  • เปลี่ยน "Server authentication" เป็น "SQL Server และ Windows Authentication mode"
  • เริ่มบริการ SQLServer ใหม่
    • คลิกขวาที่อินสแตนซ์
    • คลิก "รีสตาร์ท"

6
ฉันใช้เวลาประมาณสองชั่วโมงเพราะฉันไม่เข้าใจว่าจะต้องรีสตาร์ทเซิร์ฟเวอร์ทั้งหมด นี่เป็นเพียงความบ้าคลั่งที่จำเป็นต้องมีการรีสตาร์ทสำหรับสิ่งนั้น Microsoft ไม่มีข้อ จำกัด สำหรับ crapware ที่พวกเขาพ่นออกมา
ผู้ใช้ที่ลงทะเบียน

1
นี่เป็นคำตอบที่สำคัญเช่นกันว่าทำไมไม่สามารถเชื่อมต่อกับอินสแตนซ์ Amazon EC2 ที่เซิร์ฟเวอร์ SQL ติดตั้งไว้
Teoman shipahi

19

คุณสามารถเข้าถึงได้โดย

Right click on instance (IE SQLServer2008)
Select "Properties"
Select "Security" option
Change "Server authentication" to "SQL Server and Windows Authentication mode"
Restart the SQLServer service
    Right click on instance
    Click "Restart"

สำหรับใครก็ตามที่อ่านสิ่งนี้: สิ่งนี้ใช้ได้กับฉันใน 2012 SQL Server ด้วย ขอบคุณ


1
ขอบคุณที่สมบูรณ์แบบตรงประเด็น .. คำตอบที่ได้รับการยอมรับเต็มไปด้วยข้อมูลที่ดี แต่นี่คือสิ่งที่ใช้ได้ผลสำหรับฉัน
Tony

4
สิ่งนี้ไม่สามารถใช้กับ OP ได้เนื่องจากเขากล่าวว่า "โหมดการตรวจสอบสิทธิ์บน SQL Server ถูกตั้งค่าเป็นทั้ง (Windows และ SQL)"
Tim Schmelter

1

วิธีแก้ไขปัญหาที่ถูกต้องคือตรวจสอบให้แน่ใจว่าการรับรองความถูกต้องของเซิร์ฟเวอร์ SQL เปิดอยู่สำหรับ SQL Server ของคุณ


1

หลังจากเปิดใช้งาน "SQL Server and Windows Authentication mode" ให้ไปที่หัวข้อต่อไปนี้

  1. การจัดการคอมพิวเตอร์ (ในเมนูเริ่ม)
  2. บริการและแอพพลิเคชั่น
  3. ตัวจัดการการตั้งค่าคอนฟิกเซิร์ฟเวอร์ SQL
  4. การกำหนดค่าเครือข่ายเซิร์ฟเวอร์ SQL
  5. โปรโตคอลสำหรับ MSSQLSERVER
  6. คลิกขวาที่ TCP / IP และเปิดใช้งาน

ในที่สุดรีสตาร์ท SQL Server

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.