SUNUCU SSL kullanacak şekilde yapılandırıldığında SQL Server ile başlayamaz

Bu makalede, sunucu SSL kullanacak şekilde yapılandırıldığında oluşan 17182 (TDSSNIClient başlatma işlemi hata 0xd, durum kodu 0x38) ile başarısız oldu hatası için bir çözüm sağlanır.

Şunlar için geçerlidir: SQL Server
Özgün KB numarası: 2023869

Belirtiler

Aşağıdaki senaryoyu değerlendirin:

  • Windows Server 2008 veya işletim sisteminin sonraki bir sürümünü çalıştıran bir sistemde barındırılan bir SQL Server 2005 veya sonraki bir sürümüne sahipsiniz.

  • Aşağıdaki kayıt defteri anahtarı altındaki Sertifika değerine sertifikanın Parmak izini el ile girerek SQL Server'ınız için SSL şifrelemesini yapılandırmış olursunuz:

    HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\<instance>\MSSQLServer\SuperSocketNetLib

Bu senaryoda SQL Server'ınız başlatılamayabilir ve AŞAĞıDAKI iletiler SQL Server Errorlog'a kaydedilir:

<Datetime> Sunucusu Hatası: 17182, Önem Derecesi: 16, Durum: 1.
<Datetime> Server TDSSNIClient başlatma işlemi 0xd, durum kodu 0x38 hatayla başarısız oldu.
<Datetime> Sunucusu Hatası: 17182, Önem Derecesi: 16, Durum: 1. <Datetime> Server TDSSNIClient başlatma işlemi 0xd, durum kodu 0x1 hatayla başarısız oldu.
<Datetime> Sunucusu Hatası: 17826, Önem Derecesi: 18, Durum: 3.
<Datetime> Sunucusu, ağ kitaplığındaki bir iç hata nedeniyle ağ kitaplığını başlatamadı. Nedenini belirlemek için, hata günlüğünde bunun hemen öncesinde yer alan hataları gözden geçirin.
<Datetime> Sunucusu Hatası: 17120, Önem Derecesi: 16, Durum: 1.
<Datetime> Server SQL Server, FRunCM iş parçacığını ortaya çıkaramadı. Olası ilgili sorunlar hakkında bilgi için SQL Server hata günlüğünü ve Windows olay günlüklerini denetleyin.

Neden

Bu belirtiler için yaygın bir kök neden, MMC'deki Sertifikalar ek bileşeninin zengin düzenleme denetiminden kopyalandığında yanlışlıkla sertifikanın Parmak İzi değerine eklenmiş olabilecek görünmez bir karakterdir.

Çözüm

Aşağıdaki çözümlerden birini kullanabilirsiniz:

  • Bir sertifikanın Parmak İzi değerini kopyalarken MMC'deki Sertifikalar ek bileşeninden baştaki karakterleri kopyalamaktan kaçının.

  • Sertifikayı bir metin dosyasına aktarmak ve ardından gerekli sertifikanın Parmak izi değerini metin dosyasından kopyalamak için MMC'deki sertifikalar ek bileşeni yerine Certutil aracını kullanın. Kullanım aşağıda gösterilmiştir:

    Bilgisayarın Geçerli Kullanıcı sertifika deposunun içeriğini görüntülemek için komut istemine aşağıdakileri yazın:

    certutil -store -user my

    Bilgisayarın Yerel Bilgisayar sertifika deposunun içeriğini görüntülemek için komut istemine aşağıdakileri yazın:

    certutil -store my

Vista tabanlı işletim sistemlerindeki bir yönetim komut isteminde aşağıdakileri kullanarak yukarıdaki komutun çıkışını bir metin dosyasına yönlendirebilirsiniz:

certutil -store my > cert.txt

Parmak izi, Sertifika Karması(sha1) ile başlayan satırda bulunabilir

Örneğin: Sertifika Karması(sha1): e7 02 4b 42 c4 04 fd 44 8c ec 21 f1 91 76 5c b7 c3 ad 1d 55

Daha sonra bu değeri (boşluksuz - yukarıdaki örnekte e7024b42c404fd448cec21f191765cb7c3ad1d55) aşağıdaki kayıt defteri anahtarı altındaki Sertifika değerine kopyalayabilirsiniz:

HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\<instance>\MSSQLServer\SuperSocketNetLib

Daha Fazla Bilgi

17182 hata iletisinde 0x38 durum kodu, SQL Server'ın SSL başlatılırken bir hatayla karşılaştığı anlamına gelir. Diğer ayrıntılar için bkz . SQL Protokolleri .

dönüş kodu 0xd işletim sistemi hatası 0xd (13) belirtir ve bu da "Veriler geçersiz" hatasını gösterir. Yukarıdaki 17182 "TDSSNIClient başlatma işlemi hata 0xd başarısız oldu, durum kodu 0x38" hatası özellikle Sertifika değeri altındaki dizenin sertifikanın geçerli parmak izine düzgün şekilde dönüştürülemediği için oluşur.

Sertifikalar ek bileşenindeki bu GUI sorunu, Sertifikalar ek bileşeninde zengin bir düzenleme denetimi kullanmadığından Windows'un eski sürümlerinde (örneğin, Windows XP, Windows Server 2003) oluşmaz

Bu makalede belgelenen sorunla karşılaşıp karşılaşmayacağınızı denetlemek için aşağıdaki yordamı kullanabilirsiniz:

  1. regedit'i açın ve aşağıdaki kayıt defteri anahtarına gidin ve anahtarı SSLKey.reg dosyasına aktarın:

    HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\<instance>\MSSQLServer\SuperSocketNetLib

  2. 1. Adım'daki SSLKey.reg dosyasını Not Defteri'ni ve Dosya menüsündeki Farklı Kaydet iletişim kutusunu kullanarak açın, Kodlama listesinde ANSI'ye tıklayın ve ardından Kaydet'e tıklayın.

  3. Aşağıdaki uyarıyı alırsanız Tamam'a tıklayarak 3. Adıma geçin.

    Uyarı

    Bu dosya Unicode biçiminde karakterler içerir ve bu dosyayı ANSI ile kodlanmış bir metin dosyası olarak kaydederseniz kaybolacak. Unicode bilgilerini korumak için aşağıdaki İptal'e tıklayın ve kodlama açılan listesinden Unicode seçeneklerinden birini seçin. Devam etmek?

  4. SSLKey.reg dosyasını kapatın ve Not Defteri'ni kullanarak yeniden açın.

  5. Sertifikanızın parmak izinde bir soru işareti veya başka bir geçersiz karakter görürseniz bu, büyük olasılıkla bu makalede belgelenen sorunla karşılaşmış olduğunuzun göstergesidir:

    Örnek bir giriş aşağıdakine benzer olabilir:

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer\SuperSocketNetLib]
    "Certificate"="?b009d02038431da332f095b4ea6a126f4f5c7d18"