Solucionar problemas de errores de protocolo durante el inicio del motor de base de datos
Cuando SQL Server Database Engine (Motor de base de datos de SQL Server) encuentre un error de protocolo durante el inicio, se escribirá un mensaje de error en el registro de errores de SQL Server y en el Registro de eventos de Windows en el siguiente formato:
"Error: 17182, gravedad: 16, estado: 1."
"Error de inicialización de TDSSNIClient <x>, código de estado <y>."
En este mensaje, <x> es el código de error subyacente que devuelve el subsistema de comunicación o seguridad, e <y> es un estado de error de protocolo de SQL Server interno.
[!NOTA]
El protocolo de memoria compartida y el protocolo de canalizaciones con nombre comparten algunos aspectos de su implementación. Si un protocolo genera un error, puede causar que también se produzca un error en el otro. Si el protocolo indicado en el mensaje de error está deshabilitado pero el error persiste, intente iniciar de nuevo con los protocolos de memoria compartida y canalizaciones con nombre deshabilitados.
Interpretar el código de error
El código de error subyacente, <x>, suele ser un código de error que devuelve el nivel de red de Windows o una llamada de la interfaz del proveedor de compatibilidad para seguridad (SSPI). En el caso de los códigos de error de red de Windows, la ejecución del comando net helpmsg puede ayudar a interpretar el código. Los códigos de error SSPI no son tan sencillos de descifrar. Es posible que tenga que buscar en Microsoft Knowledge Base o, si está instalado el SDK del sistema operativo, examinar el archivo WinError.h.
Interpretar el código de estado del error de protocolo
En la siguiente tabla se enumeran los estados de error de protocolo de SQL Server. Tenga en cuenta que la mayoría de los estados de error indican una condición de error interna, pero el valor específico proporcionará información respecto al área de protocolo concreta con la que se relaciona el error. Por ejemplo, si el valor se encuentra entre 7 y 30 (0x0A y 0x1E), el error tiene su origen en el procesamiento TCP/IP. Los códigos de estado del mensaje de error se presentan en formato hexadecimal. En la siguiente tabla se proporciona el equivalente decimal para mayor claridad.
Intervalo de códigos de estado en formato hexadecimal |
Intervalo de códigos de estado en formato decimal |
Área de protocolo |
---|---|---|
0x03 |
3 |
Memoria compartida |
0x07-0x1E |
7-30 |
TCP/IP |
0x1F-0x23 |
31-35 |
Conexión de administrador dedicada (DAC) |
0x35 |
53 |
Canalizaciones con nombre |
0x36 |
54 |
Adaptador de interfaz virtual (VIA) |
0x38 |
56 |
Capa de sockets seguros (SSL) |
0x40-0x4F |
64-79 |
Memoria compartida |
0x50-0x5F |
80-95 |
Canalizaciones con nombre |
0x60-0x6F |
96-111 |
VIA |
0x70-0x7F |
112-127 |
HTTP |
0x80-0x8F |
128-143 |
SSL |
0x90-0x9F |
144-159 |
General |
En la siguiente tabla se enumeran algunos códigos de error comunes.
Código de error |
Descripción |
---|---|
0x03 |
Error al iniciar la compatibilidad con memoria compartida |
0x04 |
Todos los protocolos deshabilitados |
0x0A |
No se puede inicializar la escucha TCP/IP |
0x1C |
Servidor configurado para escuchar en una dirección IP específica de un entorno de clúster |
0x1E |
Se ha detectado una dirección IP duplicada en la red |
0x35 |
Error al iniciar la compatibilidad con canalizaciones con nombre |
0x36 |
Error al iniciar la compatibilidad con VIA |
0x38 |
Error al obtener o usar el certificado para SSL |
0x3A |
No se pueden inicializar las escuchas de comunicación |
0x40 |
No se puede inicializar la escucha de memoria compartida |
0x50 |
No se puede inicializar la escucha de canalizaciones con nombre |
0x60 |
No se puede inicializar la escucha VIA |
0x70 |
No se puede inicializar la escucha HTTP |
0x80 |
No se puede inicializar la compatibilidad con SSL |
Ejemplos
A continuación se incluye un ejemplo de un error típico que se produce durante el inicio: "Error de inicialización de TDSSNIClient 0x80092004, código de estado 0x38".
El valor 0x80092004 es un código de error SSPI que se convierte en CRYPT_E_NOT_FOUND. 0x38 es un código de error interno que indica que el nivel de comunicaciones de SQL Server no pudo inicializar la escucha. El error fue generado por SSL porque no encontró el certificado.
Errores que se devuelven cuando todos los protocolos están deshabilitados
Cuando todos los protocolos están deshabilitados, pueden producirse los siguientes errores:
"Error: 17182, gravedad: 16, estado: 1."
"Error de inicialización de TDSSNIClient 0xd, código de estado 0x4."
"Error: 17182, gravedad: 16, estado: 1."
"Error de inicialización de TDSSNIClient 0xd, código de estado 0x1."
"Error: 17826, gravedad: 18, estado: 3."
"No se pudo iniciar la biblioteca de red debido a un error interno. Para determinar la causa, revise los errores inmediatamente anteriores a éste en el registro de errores."
"Error: 17120, gravedad: 16, estado: 1."
"SQL Server no pudo generar el subproceso FRunCM. Busque información sobre posibles problemas relacionados en el registro de errores de SQL Server y el registro de eventos de Windows."