Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln innehåller en lösning på felet 17182 (TDSSNIClient-initieringen misslyckades med fel 0xd, statuskod 0x38) som inträffar när servern är konfigurerad att använda SSL.
Gäller för: SQL Server
Ursprungligt KB-nummer: 2023869
Symptom
Föreställ dig följande scenario:
Du har en instans av SQL Server 2005 eller en senare version som finns på ett system som kör antingen Windows Server 2008 eller en senare version av operativsystemet.
Du har konfigurerat SSL-kryptering för SQL Server genom att manuellt ange tumavtrycket för ett certifikat i certifikatvärdet under följande registernyckel:
HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\<instance>\MSSQLServer\SuperSocketNetLib
I det här scenariot kan det hända att SQL Server inte startar och följande meddelanden loggas i SQL Server-felloggen:
<Datetime> Server-fel: 17182, Allvarlighetsgrad: 16, Tillstånd: 1.
<Datetime> Server TDSSNIClient-initieringen misslyckades med fel 0xd, statuskod 0x38.
<Datetime> Server-fel: 17182, Allvarlighetsgrad: 16, Tillstånd: 1. <Datetime> Server TDSSNIClient-initieringen misslyckades med fel 0xd, statuskod 0x1.
<Datetime> Server-fel: 17826, Allvarlighetsgrad: 18, Tillstånd: 3.
<Datetime> Server Det gick inte att starta nätverksbiblioteket på grund av ett internt fel i nätverksbiblioteket. Du kan fastställa orsaken genom att granska felen omedelbart före den här i felloggen.
<Datetime> Server-fel: 17120, Allvarlighetsgrad: 16, Tillstånd: 1.
<Datetime> Server SQL Server kunde inte skapa FRunCM-tråd. I SQL Server-felloggen och Windows-händelseloggarna finns information om möjliga relaterade problem.
Orsak
En vanlig rotorsak till dessa symtom är ett osynligt tecken som oavsiktligt kan ha lagts till i certifikatets tumavtrycksvärde när det kopieras från snapin-modulen Certifikats rich-edit-kontroll i MMC.
Åtgärd
Du kan använda någon av följande lösningar:
Undvik att kopiera inledande tecken från snapin-modulen Certifikat i MMC när du kopierar tumavtrycksvärdet för ett certifikat.
Använd verktyget Certutil i stället för snapin-modulen certifikat i MMC för att exportera certifikatet till en textfil och kopiera sedan tumavtrycksvärdet för det certifikat som krävs från textfilen. Användningen visas nedan:
Om du vill visa innehållet i datorns aktuella användarcertifikatarkiv skriver du följande i kommandotolken:
certutil -store -user myOm du vill visa innehållet i datorns certifikatarkiv för lokala datorer skriver du följande i kommandotolken:
certutil -store my
Du kan dirigera utdata från kommandot ovan till en textfil med hjälp av följande i en administrativ kommandotolk på Vista-baserade operativsystem:
certutil -store my > cert.txt
Tumavtrycket kan placeras i raden som börjar med Cert Hash(sha1)
Exempel: Cert Hash(sha1): e7 02 4b 42 c4 04 fd 44 8c ec 21 f1 91 76 5c b7 c3 ad 1d 55
Du kan sedan kopiera det här värdet (utan blanksteg – i exemplet ovan blir det e7024b42c404fd448cec21f191765cb7c3ad1d55) till certifikatvärdet under följande registernyckel:
HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\<instance>\MSSQLServer\SuperSocketNetLib
Mer information
En statuskod 0x38 i felmeddelandet 17182 innebär att SQL Server upplevde ett fel under initieringen av SSL. Mer information finns i SQL-protokoll .
Returkoden 0xd anger OS-fel 0xd (13) som översätts till "Data är ogiltiga" Ovanstående fel 17182 "TDSSNIClient-initiering misslyckades med fel 0xd, statuskod 0x38" inträffar specifikt på grund av att strängen under Certifikatvärde inte kan konverteras tillbaka till ett giltigt tumavtryck av certifikatet.
Det här GUI-problemet med snapin-modulen Certifikat uppstår inte i äldre versioner av Windows (till exempel Windows XP, Windows Server 2003), eftersom de inte använder en omfattande redigeringskontroll i snapin-modulen Certifikat
Om du vill kontrollera om du stöter på problemet som beskrivs i den här artikeln kan du använda följande procedur:
Öppna regedit och gå till följande registernyckel och exportera nyckeln till SSLKey.reg fil:
HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\<instance>\MSSQLServer\SuperSocketNetLibÖppna filen SSLKey.reg från steg 1 med anteckningar och klicka på ANSI i kodningslistan med hjälp av dialogrutan Spara som i arkiv-menyn och klicka sedan på Spara.
Om du får varningen nedan fortsätter du till steg 3 genom att klicka på OK.
Varning
Den här filen innehåller tecken i Unicode-format som går förlorade om du sparar filen som en ANSI-kodad textfil. Om du vill behålla Unicode-informationen klickar du på Avbryt nedan och väljer sedan något av Unicode-alternativen i listrutan Kodning. Fortsätta?
Stäng filen SSLKey.reg och öppna den igen med anteckningar.
Om du nu ser ett frågetecken eller något annat ogiltigt tecken i tumavtrycket för certifikatet är det en indikation på att du förmodligen stöter på problemet som beskrivs i den här artikeln:
En exempelpost kan se ut ungefär så här:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer\SuperSocketNetLib]
"Certificate"="?b009d02038431da332f095b4ea6a126f4f5c7d18"