SQL Server + SQL Server Kimlik Doğrulaması'nda oturum açılamıyor + Hata: 18456


121

Localhost \ sql2008 Sunucumda oturum açma hesabı oluşturdum (Örn. User123)

Veritabanına Eşlenmiş (varsayılan)

SQL Server'da Kimlik Doğrulama Modu hem (Windows hem de SQL) olarak ayarlanmıştır

Ancak SQL Server'da oturum açma aşağıdaki mesajla başarısız oluyor (Kullanıcı123 için)

Not: KullanıcıAdı / Parolanın doğru şekilde yazıldığını birden çok kez kontrol ettiniz

Hata detayları:

'User123' kullanıcısı için oturum açma başarısız oldu (Net.SqlClient Veri Sağlayıcı)

Sunucu Adı: localhost \ sql2008 Hata Numarası: 18456 Önem: 14 Durum: 1 Satır Numarası: 65536

bu konuda herhangi bir yardım lütfen.


1
Kullanıcı için SqlServer Yönetim Konsolu aracılığıyla hem sql hem de Windows kimlik doğrulama erişimini test edin ve yukarıdaki hesapla erişip erişemeyeceğinizi görün. Hangi veri sağlayıcısını ve bağlantı dizesini kullanıyorsunuz?
Joe Pitz

1
SSMS'de oturum açmaya çalışıyorum ve yukarıdaki hatayı atıyor.
Sreedhar

1
Yönetici hesabı olarak giriş yapabilir misiniz?
Joe Pitz

Yönetici olarak oturum açın ve etkinlik günlüğünüzü kontrol edin. Hatanın nedeni burada listelenmelidir. Yönetim klasörünün altına bakın
Joe Pitz

Benim için çalışan alternatif şuydu: stackoverflow.com/questions/28090747/…
Mark Schultheiss

Yanıtlar:


49

Varsayılan olarak, oturum açma başarısız hata iletisi hiçbir şey değildir, ancak oturum açma kimlik bilgilerinin uyuşmazlığı nedeniyle sunucu tarafından bir istemci kullanıcı bağlantısı reddedilmiştir. Kontrol edebileceğiniz ilk görev, o kullanıcının o SQL Server örneğinde ve ilgili veritabanında da ilgili ayrıcalıklara sahip olup olmadığını görmektir, bu iyidir. Açıkçası, gerekli ayrıcalıklar ayarlanmadıysa, o kullanıcı oturumu için ilgili ayrıcalıkları vererek bu sorunu çözmeniz gerekir.

Bu kullanıcının veritabanı ve sunucu ile ilgili izinleri varsa, Sunucu bu oturum açma için herhangi bir kimlik bilgisi sorunuyla karşılaşırsa, SQL Server'a kimlik doğrulamasının geri verilmesini engelleyecektir, istemci aşağıdaki hata mesajını alır:

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

Tamam şimdi ne, hata mesajına bakarak bunun Seviye ve durumu anlamak için açıklayıcı olmadığını düşünüyorsunuz. Varsayılan olarak İşletim Sistemi hatası, oturum açma kimlik doğrulamasındaki sorunların niteliğine bakılmaksızın 'Durum'u 1 olarak gösterecektir. Bu nedenle, daha fazla araştırma yapmak için, bu hatanın Önem ve durumu hakkında daha fazla bilgi için ilgili SQL Server örneği hata günlüğüne de bakmanız gerekir. Günlükte ilgili bir girişe şu şekilde bakabilirsiniz:

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

Yukarıda tanımlandığı gibi, hatadaki Önem ve Durum sütunları, sorunun kaynağının doğru yansımasını bulmak için anahtardır. Durum için yukarıdaki 8 numaralı hata, parola uyuşmazlığı nedeniyle kimlik doğrulama başarısızlığını gösterir. Çevrimiçi kitaplar başvuruda bulunur: Varsayılan olarak, 19'dan daha düşük önem derecesine sahip kullanıcı tanımlı iletiler, oluştuklarında Microsoft Windows uygulama günlüğüne gönderilmez. Önem derecesi 19'dan düşük olan kullanıcı tanımlı mesajlar bu nedenle SQL Server Agent uyarılarını tetiklemez.

SQL Server Protokollerinde (Dev.team) Program Yöneticisi Sung Lee, Hata durumu açıklaması hakkında daha fazla bilgi verdi: Yaygın hata durumları ve açıklamaları aşağıdaki tabloda verilmiştir:

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

Bu SQL Server örneğinin hata günlüğünden tanımlanan önem derecesi veya durum düzeyi olmadığını görebilirsiniz. Bu nedenle, bir sonraki sorun giderme seçeneği, Olay Görüntüleyicinin güvenlik günlüğüne bakmaktır [ekran görüntüsü eksik olduğu için düzenleyin, ancak

fikir, ilginç olaylar için olay günlüğüne bakın].


1
Teşekkürler bakacak ve nasıl gideceğini görecek
Sreedhar

1
ölü bağlantı lütfen gözden geçirmeyi düşünün
Chris Hayes

10
Bunun altındaki üstün cevap bu değil seçilmelidir.
void.pointer

4
Aşağıdaki yazıyı okuyun.
Levi Fuller

6
@ void.pointer OP, "SQL Sunucusunda Kimlik Doğrulama Modunun her ikisine de (Windows ve SQL) ayarlandığını" zaten belirledi. Yani aşağıdaki yazının bu soruyla hiçbir ilgisi yok.
Manachi

336

SQL Server Kimlik Doğrulamasını etkinleştirmeniz gerekir:

  1. Object Explorer'da, sunucuya sağ tıklayın ve "Özellikler" e tıklayın

DBMS Özellikleri iletişim kutusu

  1. "Sunucu Özellikleri" penceresinde soldaki sayfalar listesinde "Güvenlik" seçeneğine tıklayın. "Sunucu Kimlik Doğrulaması" altında "SQL Sunucusu ve Windows Kimlik Doğrulaması modu" radyo seçeneğini seçin.

SQL Server Kimlik Doğrulaması iletişim kutusu

  1. SQLEXPRESS hizmetini yeniden başlatın.

29
Oh milyon kez TEŞEKKÜR EDERİM. Esas olarak yukarıdaki "yeniden başlat" kelimesi için!
Magnus Smith

4
Bunun eski olduğunu biliyorum ama tamamen kıçımı kurtardı. Teşekkürler Prateek. Takdir et. Yeniden başlatmanız GEREKİYOR!
Levi Fuller

3
OP açıkça "SQL Sunucusunda Kimlik Doğrulama Modu hem (Windows hem de SQL) olarak ayarlandı" diyorsa bu neden işe yarasın?
Tim Schmelter

4
Bu cevap gereksizdir ve soru için kullanışlı değildir. OP, "SQL Sunucusunda Kimlik Doğrulama Modunun her ikisine de (Windows ve SQL) ayarlandığını" zaten belirlemiştir.
Manachi

1
Bu inanılmazdı .. !! Teşekkürler PrateekSaluja
Amin

44

Ben de aynı sorunu yaşadım, ancak benimki Sunucu kimlik doğrulamasını "SQL Server ve Windows Kimlik Doğrulaması modu" na ayarlamamış olmamdı.

Buna şununla erişebilirsiniz:

  • Örneğe sağ tıklayın (IE SQLServer2008)
  • "Özellikler" i seçin
  • "Güvenlik" seçeneğini seçin
  • "Sunucu kimlik doğrulaması" nı "SQL Server ve Windows Kimlik Doğrulama modu" olarak değiştirin
  • SQLServer hizmetini yeniden başlatın
    • Örneğe sağ tıklayın
    • "Yeniden Başlat" ı tıklayın

6
İki saat gibi harcadım çünkü tüm sunucuyu YENİDEN BAŞLATMAMI gerektiğini anlamıyordum. Böyle bir şey için yeniden başlatmanın gerekli olması delilik. Microsoft'un tükürdükleri kötü amaçlı yazılımlara hiçbir sınırı yoktur.
Kayıtlı Kullanıcı

1
Bu ayrıca, SQL sunucusunun yüklü olduğu Amazon EC2 bulut sunucusuna neden bağlanamadığına dair hayati bir cevaptır.
Teoman shipahi

19

Buna şununla erişebilirsiniz:

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"

Sadece bunu okuyan herkes için: Bu benim için 2012 SQL Server'da da çalıştı. Teşekkürler


1
Teşekkür ederim, bu mükemmeldi, doğrudan doğruya .. Kabul edilen cevap iyi bilgilerle dolu ama benim için işe yarayan buydu.
Tony

4
"SQL Sunucusunda Kimlik Doğrulama Modunun her ikisine de (Windows ve SQL) ayarlandığından" bahsettiği için bu OP için çalışamaz.
Tim Schmelter

1

Sorunun doğru çözümü, SQL Server'ınız için SQL sunucu kimlik doğrulamasının açık olduğundan emin olmaktır.


1

"SQL Server ve Windows Kimlik Doğrulama modunu" etkinleştirdikten sonra, aşağıdakilere gidin.

  1. Bilgisayar Yönetimi (Başlat Menüsünde)
  2. Hizmetler ve Uygulamalar
  3. SQL Server Yapılandırma Yöneticisi
  4. SQL Server Ağ Yapılandırması
  5. MSSQLSERVER için protokoller
  6. TCP / IP'ye sağ tıklayın ve Etkinleştirin.

Son olarak SQL Server'ı yeniden başlatın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.