Troubleshooting Protocol Errors During Database Engine Startup
When the SQL Server Database Engine encounters a protocol-related error during startup, an error message will be written in the SQL Server error log and the Windows Event Log in the following form:
"Error: 17182, Severity: 16, State: 1."
"TDSSNIClient initialization failed with error <x>, status code <y>."
In this message, <x> is the underlying error code that is returned by the communication or security subsystem, and <y> is an internal SQL Server protocol error state.
Note
The shared-memory protocol and the named-pipes protocol share some aspects of their implementation. If one protocol fails, this can cause the other to fail as well. If the protocol stated in the error message is disabled but the error persists, try starting up again with both shared memory and named pipes disabled.
Interpreting the Error Code
The underlying error code, <x>, is typically an error code that is returned by the Windows network layer or by a Security Support Provider Interface (SSPI) call. For Windows network error codes, running the net helpmsg command might help interpret the code. SSPI error codes are not as easy to decipher. You may have to search the Microsoft knowledge base or, if the operating-system SDK is installed, examine the WinError.h file.
Interpreting the Protocol Error Status Code
The SQL Server protocol error states are listed in the following table. Note that the most of the error states indicate an internal error condition, but the specific value will provide insight as to the particular protocol area under which the error falls. For example, if the value is between 7 and 30 (0x0A and 0x1E), the error stems from TCP/IP processing. Status codes in the error message are presented in hexadecimal format. In the following table the decimal equivalent is provided for clarity.
Status code range in hexadecimal format |
Status code range in decimal format |
Protocol area |
---|---|---|
0x03 |
3 |
Shared memory |
0x07-0x1E |
7-30 |
TCP/IP |
0x1F-0x23 |
31-35 |
Dedicated Administrator Connection (DAC) |
0x35 |
53 |
Named pipes |
0x36 |
54 |
Virtual Interface Adapter (VIA) |
0x38 |
56 |
Secure Sockets Layer (SSL) |
0x40-0x4F |
64-79 |
Shared memory |
0x50-0x5F |
80-95 |
Named pipes |
0x60-0x6F |
96-111 |
VIA |
0x70-0x7F |
112-127 |
HTTP |
0x80-0x8F |
128-143 |
SSL |
0x90-0x9F |
144-159 |
General |
The following table lists some common error codes.
Status code |
Description |
---|---|
0x03 |
Error starting shared memory support |
0x04 |
All protocols disabled |
0x0A |
Unable to initialize the TCP/IP listener |
0x1C |
Server configured to listen on a specific IP address in a cluster environment |
0x1E |
Duplicate IP address detected in network |
0x35 |
Error starting named pipe support |
0x36 |
Error starting VIA support |
0x38 |
Error obtaining or using the certificate for SSL |
0x3A |
Unable to initialize the communication listeners |
0x40 |
Unable to initialize the Shared Memory listener |
0x50 |
Unable to initialize the Named Pipe listener |
0x60 |
Unable to initialize the VIA listener |
0x70 |
Unable to initialize the HTTP listener |
0x80 |
Unable to initialize SSL support |
Examples
The following is an example of a typical error that occurs during startup: "TDSSNIClient initialization failed with error 0x80092004, status code 0x38."
The value 0x80092004 is an SSPI error code that translates to CRYPT_E_NOT_FOUND. 0x38 is an internal error code that signifies that the SQL Server communications layer could not initialize the listener. This error was generated by SSL because it could not locate the certificate.
Errors Returned When All Protocols Are Disabled
You might receive the following errors occur when all protocols are disabled:
"Error: 17182, Severity: 16, State: 1."
"TDSSNIClient initialization failed with error 0xd, status code 0x4."
"Error: 17182, Severity: 16, State: 1."
"TDSSNIClient initialization failed with error 0xd, status code 0x1."
"Error: 17826, Severity: 18, State: 3."
"Could not start the network library because of an internal error in the network library. To determine the cause, review the errors immediately preceding this one in the error log."
"Error: 17120, Severity: 16, State: 1."
"SQL Server could not spawn FRunCM thread. Check the SQL Server error log and the Windows event logs for information about possible related problems."