Tidak dapat masuk ke SQL Server + Otentikasi Server SQL + Kesalahan: 18456


121

Saya telah membuat akun login di Server localhost \ sql2008 saya (Mis. User123)

Dipetakan ke Database (default)

Mode Otentikasi di SQL Server diatur ke keduanya (Windows dan SQL)

Tapi login ke SQL Server gagal dengan pesan berikut (untuk User123)

Catatan: Telah memeriksa berkali-kali bahwa NamaPengguna / Kata Sandi diketik dengan benar

Rincian kesalahan:

Login gagal untuk pengguna 'User123' (Penyedia Data Net.SqlClient)

Nama Server: localhost \ sql2008 Nomor Kesalahan: 18456 Keparahan: 14 Status: 1 Nomor Baris: 65536

ada bantuan dalam hal ini.


1
Uji akses otentikasi sql dan windows melalui SqlServer Management Console untuk pengguna dan lihat apakah Anda dapat mengakses dengan akun di atas. Penyedia data dan string koneksi apa yang Anda gunakan?
Joe Pitz

1
Saya mencoba masuk di SSMS dan itu melempar kesalahan di atas.
Sreedhar

1
Anda bisa login sebagai akun admin?
Joe Pitz

Login sebagai admin dan periksa eventlog Anda. Alasan kesalahan harus dicantumkan di sana. Lihat di bawah folder manajemen
Joe Pitz

Alternatif yang berhasil untuk saya adalah stackoverflow.com/questions/28090747/…
Mark Schultheiss

Jawaban:


49

Secara default, pesan kesalahan gagal login tidak lain adalah koneksi pengguna klien telah ditolak oleh server karena ketidakcocokan kredensial login. Tugas pertama yang mungkin Anda periksa adalah untuk melihat apakah pengguna tersebut memiliki hak yang relevan pada contoh SQL Server dan database yang relevan juga, itu bagus. Jelas jika hak istimewa yang diperlukan belum ditetapkan maka Anda perlu memperbaiki masalah itu dengan memberikan hak istimewa yang relevan untuk login pengguna tersebut.

Meskipun jika pengguna tersebut memiliki hibah yang relevan pada database & server jika Server mengalami masalah kredensial apa pun untuk login tersebut maka itu akan mencegah pemberian otentikasi kembali ke SQL Server, klien akan mendapatkan pesan kesalahan berikut:

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

Ok sekarang bagaimana, dengan melihat pesan kesalahan Anda merasa seperti ini tidak deskriptif untuk memahami Level & status. Secara default, kesalahan Sistem Operasi akan menampilkan 'Status' sebagai 1 terlepas dari sifat masalah dalam mengautentikasi login. Jadi untuk menyelidiki lebih lanjut, Anda perlu melihat log kesalahan contoh SQL Server yang relevan juga untuk informasi lebih lanjut tentang Keparahan & status kesalahan ini. Anda mungkin melihat entri terkait di log sebagai:

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

Seperti yang didefinisikan di atas kolom Severity & State pada kesalahan adalah kunci untuk menemukan refleksi akurat untuk sumber masalah. Pada kesalahan di atas nomor 8 untuk negara menunjukkan kegagalan otentikasi karena ketidakcocokan kata sandi. Buku online merujuk: Secara default, pesan yang ditentukan pengguna dengan tingkat keparahan yang lebih rendah dari 19 tidak dikirim ke log aplikasi Microsoft Windows saat terjadi. Oleh karena itu, pesan yang ditentukan pengguna dengan tingkat keparahan yang lebih rendah dari 19 tidak memicu peringatan Agen Server SQL.

Sung Lee, Manajer Program di SQL Server Protocols (Dev.team) telah menguraikan informasi lebih lanjut tentang Deskripsi status kesalahan: Status kesalahan umum dan deskripsinya disediakan dalam tabel berikut:

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

Anda dapat melihat tidak ada tingkat keparahan atau status yang ditentukan dari log kesalahan contoh SQL Server. Jadi opsi pemecahan masalah berikutnya adalah dengan melihat log keamanan Peraga Peristiwa [edit karena tangkapan layar hilang tetapi Anda mendapatkan

Ide, lihat di log acara untuk acara menarik].


1
Terima kasih akan melihat dan melihat bagaimana kelanjutannya
Sreedhar

1
tautan mati harap pertimbangkan untuk merevisi
Chris Hayes

10
Jawaban terbaik di bawah ini yang harus dipilih, bukan yang ini.
void.pointer

4
Baca postingan di bawah ini.
Levi Fuller

6
@ void.pointer OP sudah menetapkan bahwa "Mode Otentikasi di SQL Server diatur ke keduanya (Windows dan SQL)". Jadi postingan di bawah ini tidak ada relevansinya dengan pertanyaan ini.
Manachi

336

Anda perlu mengaktifkan Otentikasi Server SQL:

  1. Di Object Explorer, klik kanan pada server dan klik "Properties"

Dialog Properti DBMS

  1. Di jendela "Server Properties", klik "Security" di daftar halaman di sebelah kiri. Di bawah "Otentikasi Server" pilih opsi radio "SQL Server dan mode Otentikasi Windows".

Dialog Otentikasi SQL Server

  1. Mulai ulang layanan SQLEXPRESS.

29
Oh TERIMA KASIH jutaan kali. Terutama untuk kata "restart" di atas!
Magnus Smith

4
Saya tahu ini sudah tua, tapi itu benar-benar menyelamatkan pantat saya. Terima kasih Prateek. Menghargai itu. PERLU memulai ulang!
Levi Fuller

3
Mengapa ini harus bekerja jika OP secara eksplisit menyatakan bahwa "Mode Otentikasi di SQL Server diatur ke keduanya (Windows dan SQL)"?
Tim Schmelter

4
Jawaban ini mubazir dan tidak berguna untuk pertanyaan itu. OP telah menetapkan bahwa "Mode Otentikasi di SQL Server diatur ke keduanya (Windows dan SQL)".
Manachi

1
Ini luar biasa .. !! Terima kasih PrateekSaluja
Amin Sayed

44

Saya memiliki masalah yang sama, namun masalah saya adalah karena saya belum mengatur otentikasi Server ke "SQL Server dan mode Otentikasi Windows" (yang Anda miliki). Saya hanya ingin menyebutkannya di sini jika seseorang melewatkannya dalam pertanyaan Anda.

Anda dapat mengakses ini dengan

  • Klik kanan pada instance (IE SQLServer2008)
  • Pilih "Properties"
  • Pilih opsi "Keamanan"
  • Ubah "Otentikasi server" menjadi "Mode Otentikasi SQL Server dan Windows"
  • Mulai ulang layanan SQLServer
    • Klik kanan pada instance
    • Klik "Mulai Ulang"

6
Saya menghabiskan waktu sekitar dua jam karena saya tidak mengerti bahwa saya perlu me-restart seluruh server. Ini gila bahwa restart diperlukan untuk hal seperti itu. Microsoft tidak memiliki batasan untuk crapware yang mereka keluarkan.
Pengguna Terdaftar

1
Ini juga merupakan jawaban penting mengapa tidak dapat terhubung ke instans Amazon EC2 yang diinstal server SQL di dalamnya.
Teoman shipahi

19

Anda dapat mengakses ini dengan

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"

Hanya untuk orang lain yang membaca ini: Ini juga berfungsi untuk saya di SQL Server 2012. Terima kasih


1
Terima kasih ini sempurna, langsung ke intinya .. jawaban yang diterima diisi dengan info bagus tapi inilah yang berhasil untuk saya.
Tony

4
Ini tidak dapat bekerja untuk OP karena dia menyebutkan bahwa "Mode Otentikasi di SQL Server diatur ke keduanya (Windows dan SQL)".
Tim Schmelter

1

Solusi yang tepat untuk masalah ini adalah memastikan otentikasi server SQL diaktifkan untuk SQL Server Anda.


1

Setelah mengaktifkan "SQL Server dan mode Autentikasi Windows", navigasikan ke berikut ini.

  1. Manajemen Komputer (di Menu Mulai)
  2. Layanan Dan Aplikasi
  3. Manajer Konfigurasi SQL Server
  4. Konfigurasi Jaringan SQL Server
  5. Protokol untuk MSSQLSERVER
  6. Klik kanan pada TCP / IP dan Aktifkan.

Terakhir, mulai ulang SQL Server.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.