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

Bu makalede, sunucu SSL kullanmak üzere yapılandırıldığında oluşan 17182 (TDSSNIClient başlatma işlemi hata 0xd, durum kodu 0x38) 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 inceleyin:

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

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

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

Bu senaryoda, SQL Server başlatılamayabilir ve aşağıdaki iletiler SQL Server Errorlog'a kaydedilir:

<Tarih Saat> Sunucusu Hatası: 17182, Önem Derecesi: 16, Durum: 1.
<Datetime> Server TDSSNIClient başlatma işlemi hata 0xd, durum kodu 0x38 başarısız oldu.
<Tarih Saat> Sunucusu Hatası: 17182, Önem Derecesi: 16, Durum: 1. <Datetime> Server TDSSNIClient başlatma işlemi hata 0xd, durum kodu 0x1 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ı. Nedeni belirlemek için, hata günlüğünde bu hatadan hemen önceki hataları gözden geçirin.
<Datetime> Sunucusu Hatası: 17120, Önem Derecesi: 16, Durum: 1.
<Datetime> Server SQL Server FRunCM iş parçacığını döndüremedi. 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.

  • MMC'deki sertifika ek bileşeni yerine Certutil aracını kullanarak sertifikayı bir metin dosyasına aktarın ve ardından gerekli sertifikanın Parmak izi değerini metin dosyasından kopyalayı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şluk olmadan - 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 SSL'nin başlatılması sırasında 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ını 0xd (13) belirtir ve bu da "Veriler geçersiz" anlamına gelir . Yukarıdaki hata 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 bir ş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ıkları için 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. Not Defteri'ni kullanarak 1. Adımdaki SSLKey.reg dosyasını açın ve Dosya menüsündeki Farklı Kaydet iletişim kutusunu kullanı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çeriyor 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?

  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şıyorsunuz demektir:

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

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