Không thể đăng nhập vào SQL Server + Xác thực SQL Server + Lỗi: 18456


121

Tôi đã tạo tài khoản đăng nhập trên Máy chủ localhost \ sql2008 của mình (Ví dụ: User123)

Ánh xạ tới Cơ sở dữ liệu (mặc định)

Chế độ xác thực trên SQL Server được đặt thành cả hai (Windows và SQL)

Nhưng đăng nhập vào SQL Server không thành công với thông báo sau (đối với User123)

Lưu ý: Đã kiểm tra nhiều lần rằng Tên người dùng / Mật khẩu được nhập chính xác

Chi tiết lỗi:

Đăng nhập không thành công cho người dùng 'User123' (Nhà cung cấp dữ liệu Net.SqlClient)

Tên máy chủ: localhost \ sql2008 Số lỗi: 18456 Mức độ nghiêm trọng: 14 Trạng thái: 1 Số dòng: 65536

xin vui lòng giúp đỡ về điều này.


1
Kiểm tra cả quyền truy cập xác thực sql và windows thông qua Bảng điều khiển quản lý SqlServer cho người dùng và xem liệu bạn có thể truy cập bằng tài khoản trên hay không. Bạn đang sử dụng nhà cung cấp dữ liệu và chuỗi kết nối nào?
Joe Pitz

1
Tôi đang cố gắng đăng nhập bằng SSMS và nó xuất hiện lỗi ở trên.
Sreedhar

1
Bạn có thể đăng nhập với tư cách là tài khoản quản trị?
Joe Pitz

Đăng nhập với tư cách quản trị viên và kiểm tra nhật ký sự kiện của bạn. Lý do cho lỗi nên được liệt kê ở đó. Tìm trong thư mục quản lý
Joe Pitz

Thay thế phù hợp với tôi là stackoverflow.com/questions/28090747/…
Mark Schultheiss

Câu trả lời:


49

Theo mặc định, thông báo lỗi đăng nhập không thành công không có gì khác ngoài kết nối người dùng máy khách đã bị máy chủ từ chối do thông tin đăng nhập không khớp. Nhiệm vụ đầu tiên bạn có thể kiểm tra là xem liệu người dùng đó có các đặc quyền liên quan trên phiên bản SQL Server đó và cơ sở dữ liệu có liên quan hay không, điều đó tốt. Rõ ràng là nếu các đặc quyền cần thiết không được đặt thì bạn cần phải khắc phục vấn đề đó bằng cách cấp các đặc quyền liên quan cho đăng nhập của người dùng đó.

Mặc dù người dùng đó có các quyền liên quan trên cơ sở dữ liệu & máy chủ nếu Máy chủ gặp phải bất kỳ vấn đề thông tin xác thực nào đối với thông tin đăng nhập đó thì nó sẽ ngăn việc cấp xác thực trở lại cho SQL Server, máy khách sẽ nhận được thông báo lỗi sau:

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

Ok, bây giờ thì sao, bằng cách nhìn vào thông báo lỗi, bạn cảm thấy điều này không mang tính mô tả để hiểu Cấp & trạng thái. Theo mặc định, lỗi Hệ điều hành sẽ hiển thị 'Trạng thái' là 1 bất kể bản chất của các vấn đề khi xác thực đăng nhập. Vì vậy, để điều tra thêm, bạn cũng cần phải xem nhật ký lỗi phiên bản SQL Server có liên quan để biết thêm thông tin về Mức độ nghiêm trọng và trạng thái của lỗi này. Bạn có thể xem một mục tương ứng trong nhật ký như:

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>'.

Như đã định nghĩa ở trên, các cột Mức độ nghiêm trọng & Trạng thái của lỗi là chìa khóa để tìm ra phản ánh chính xác cho nguồn gốc của vấn đề. Trên lỗi số 8 ở trên cho trạng thái cho biết xác thực không thành công do mật khẩu không khớp. Sách trực tuyến đề cập đến: Theo mặc định, thông báo do người dùng xác định có mức độ nghiêm trọng thấp hơn 19 sẽ không được gửi đến nhật ký ứng dụng Microsoft Windows khi chúng xảy ra. Do đó, thông báo do người dùng xác định có mức độ nghiêm trọng thấp hơn 19 không kích hoạt cảnh báo SQL Server Agent.

Sung Lee, Quản lý chương trình trong Giao thức máy chủ SQL (Dev.team) đã nêu thêm thông tin về mô tả trạng thái lỗi: Các trạng thái lỗi phổ biến và mô tả của chúng được cung cấp trong bảng sau:

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>'.

Bạn có thể thấy không có mức độ nghiêm trọng hoặc trạng thái nào được xác định từ nhật ký lỗi của phiên bản SQL Server đó. Vì vậy, tùy chọn khắc phục sự cố tiếp theo là xem nhật ký bảo mật của Người xem sự kiện [chỉnh sửa vì thiếu ảnh chụp màn hình nhưng bạn nhận được

ý tưởng, tìm trong nhật ký sự kiện để biết các sự kiện thú vị].


1
Cảm ơn sẽ xem xét và xem nó diễn ra như thế nào
Sreedhar

1
link chết hãy xem xét việc sửa đổi
Chris Hayes

10
Câu trả lời cao cấp bên dưới cái này nên được chọn, không phải cái này.
void.pointer

4
Đọc bài viết dưới đây.
Levi Fuller

6
@ void.pointer OP đã thiết lập "Chế độ xác thực trên SQL Server được đặt thành cả hai (Windows và SQL)". Vì vậy, bài đăng dưới đây không có liên quan đến câu hỏi này.
Manachi

336

Bạn cần bật Xác thực Máy chủ SQL:

  1. Trong Object Explorer, nhấp chuột phải vào máy chủ và nhấp vào "Thuộc tính"

Hộp thoại Thuộc tính DBMS

  1. Trong cửa sổ "Thuộc tính Máy chủ", nhấp vào "Bảo mật" trong danh sách các trang ở bên trái. Trong "Xác thực máy chủ", chọn tùy chọn radio "Chế độ xác thực máy chủ SQL và Windows".

Hộp thoại xác thực máy chủ SQL

  1. Khởi động lại dịch vụ SQLEXPRESS.

29
Oh CẢM ƠN một triệu lần. Chủ yếu là cho từ "khởi động lại" ở trên!
Magnus Smith

4
Tôi biết điều này là cũ, nhưng nó hoàn toàn cứu được mông của tôi. Cảm ơn Prateek. Cảm kích điều đó. CẦN khởi động lại!
Levi Fuller

3
Tại sao điều này sẽ hoạt động nếu OP tuyên bố rõ ràng rằng "Chế độ xác thực trên SQL Server được đặt thành cả hai (Windows và SQL)"?
Tim Schmelter

4
Câu trả lời này là thừa và không hữu ích cho câu hỏi. OP đã thiết lập rằng "Chế độ xác thực trên SQL Server được đặt thành cả hai (Windows và SQL)".
Manachi

1
Điều này thật tuyệt vời .. !! Cảm ơn PrateekSaluja
Amin đã nói

44

Tôi đã gặp vấn đề tương tự, tuy nhiên vấn đề của tôi là do tôi chưa đặt xác thực Máy chủ thành "Chế độ xác thực máy chủ SQL và Windows" (mà bạn có) Tôi chỉ muốn đề cập đến nó ở đây trong trường hợp ai đó bỏ sót nó trong câu hỏi của bạn.

Bạn có thể truy cập cái này bằng cách

  • Nhấp chuột phải vào phiên bản (IE SQLServer2008)
  • Chọn "Thuộc tính"
  • Chọn tùy chọn "Bảo mật"
  • Thay đổi "Xác thực máy chủ" thành "Chế độ xác thực máy chủ SQL và Windows"
  • Khởi động lại dịch vụ SQLServer
    • Nhấp chuột phải vào phiên bản
    • Nhấp vào "Khởi động lại"

6
Tôi đã dành như hai giờ vì tôi không hiểu rằng tôi cần phải KHỞI ĐỘNG toàn bộ máy chủ. Điều này thật điên rồ rằng cần phải khởi động lại cho điều đó. Microsoft không có giới hạn nào đối với các crapware mà họ tung ra.
Người dùng đã đăng ký

1
Đây cũng là câu trả lời quan trọng cho việc tại sao không thể kết nối với phiên bản Amazon EC2 mà máy chủ SQL đã cài đặt trên đó.
Teoman shipahi

19

Bạn có thể truy cập cái này bằng cách

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"

Chỉ dành cho bất kỳ ai khác đang đọc nội dung này: Điều này cũng làm việc cho tôi trên SQL Server 2012. Cảm ơn


1
Cảm ơn bạn, điều này là hoàn hảo, đi thẳng vào vấn đề .. câu trả lời được chấp nhận chứa đầy thông tin tốt nhưng đây là những gì đã làm việc cho tôi.
Tony

4
Điều này không thể hoạt động đối với OP vì anh ấy đã đề cập rằng "Chế độ xác thực trên SQL Server được đặt thành cả hai (Windows và SQL)".
Tim Schmelter

1

Giải pháp chính xác cho vấn đề là đảm bảo rằng xác thực máy chủ SQL được bật cho Máy chủ SQL của bạn.


1

Sau khi bật "SQL Server và chế độ Xác thực Windows", hãy điều hướng đến phần sau.

  1. Quản lý máy tính (trong Start Menu)
  2. Dịch vụ và ứng dụng
  3. Trình quản lý cấu hình máy chủ SQL
  4. Cấu hình mạng máy chủ SQL
  5. Giao thức cho MSSQLSERVER
  6. Nhấp chuột phải vào TCP / IP và Bật nó.

Cuối cùng khởi động lại SQL Server.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.