Solucionando problemas de erros de protocolo durante a inicialização do Mecanismo de Banco de Dados
Quando o Mecanismo de banco de dados do SQL Server encontra um erro relacionado a protocolo durante a inicialização, uma mensagem de erro é gravada no log de erros do SQL Server e no Log de Eventos do Windows, da seguinte maneira:
"Erro: 17182, Severidade: 16, Estado: 1."
"Falha de inicialização de TDSSNIClient com erro <x>, código de status <y>."
Nesta mensagem, <x> é o código de erro subjacente retornado pelo subsistema de comunicação ou segurança e <y>, um estado interno de erro de protocolo do SQL Server.
Observação |
---|
O protocolo de memória compartilhada e protocolo de pipes nomeados compartilham alguns aspectos de suas implementações. Se um protocolo falhar, isso pode fazer com que o outro também falhe. Se o protocolo declarado na mensagem de erro estiver desabilitado, mas o erro persistir, experimente reinicializar com ambos (memória compartilhada e pipes nomeados) desabilitados. |
Interpretando o código de erro
O código de erro subjacente, <x>, é, normalmente, aquele retornado pela camada de rede do Windows ou por uma chamada de interface SSPI (Security Support Provider Interface). No caso de códigos de erro de rede do Windows, executar o comando net helpmsg pode ajudar a interpretar o código. Códigos de erro de SSPI não tão fáceis de decifrar. Talvez seja preciso pesquisar a Base de Dados de Conhecimento da Microsoft ou, se o SDK do sistema operacional estiver instalado, examinar o arquivo WinError.h.
Interpretando o código de status do erro de protocolo
Os estados de erro de protocolo do SQL Server são listados na tabela a seguir. Observe que a maioria dos estados de erro indica uma condição de erro interno, mas o valor específico informa mais especificamente a área de protocolo em particular em que recai o erro. Por exemplo, se o valor estiver entre 7 e 30 (0x0A e 0x1 E), o erro se origina de processamento de TCP/IP. Os códigos de status na mensagem de erro são apresentados em formato hexadecimal. A tabela a seguir fornece o equivalente decimal, a título de esclarecimento.
Intervalo de códigos de status em formato hexadecimal |
Intervalo de códigos de status em formato decimal |
Área de protocolo |
---|---|---|
0x03 |
3 |
Memória compartilhada |
0x07-0x1E |
7-30 |
TCP/IP |
0x1F-0x23 |
31-35 |
Conexão de administrador dedicada (DAC) |
0x35 |
53 |
Pipes nomeados |
0x36 |
54 |
Adaptador de interface virtual (VIA) |
0x38 |
56 |
SSL (Secure Sockets Layer) |
0x40-0x4F |
64-79 |
Memória compartilhada |
0x50-0x5F |
80-95 |
Pipes nomeados |
0x60-0x6F |
96-111 |
VIA |
0x70-0x7F |
112-127 |
HTTP |
0x80-0x8F |
128-143 |
SSL |
0x90-0x9F |
144-159 |
Geral |
A tabela a seguir lista alguns códigos de erro comuns.
Código de status |
Descrição |
---|---|
0x03 |
Erro ao iniciar suporte à memória compartilhada |
0x04 |
Todos os protocolos desabilitados |
0x0A |
Impossível inicializar o ouvinte de TCP/IP |
0x1C |
Servidor configurado para escutar em um endereço de IP específico em um ambiente de cluster |
0x1E |
Endereço de IP duplicado detectado na rede |
0x35 |
Erro ao iniciar suporte a pipe nomeado |
0x36 |
Erro ao iniciar suporte a VIA |
0x38 |
Erro ao obter ou usar o certificado para SSL |
0x3A |
Impossível inicializar os ouvintes de comunicação |
0x40 |
Impossível inicializar o ouvinte de Memória Compartilhada |
0x50 |
Impossível inicializar o ouvinte de Pipe Nomeado |
0x60 |
Impossível inicializar o ouvinte de VIA |
0x70 |
Impossível inicializar o ouvinte de HTTP |
0x80 |
Impossível inicializar o suporte a SSL |
Exemplos
Segue um exemplo de um erro típico que ocorre durante a inicialização: "Falha de inicialização de TDSSNIClient com erro 0x80092004, código de status 0x38".
O valor 0x80092004 é um código de erro de SSPI que converte para CRYPT_E_NOT_FOUND. 0x38 é um código de erro interno que significa que a camada de comunicações do SQL Server não conseguiu inicializar o ouvinte. Este erro foi gerado pelo SSL porque ele não conseguiu localizar o certificado.
Erros retornados quando todos os protocolos estão desabilitados
Podem ocorrer os seguintes erros quando todos os protocolos estiverem desabilitados:
"Erro: 17182, Severidade: 16, Estado: 1."
"Falha de inicialização de TDSSNIClient com erro 0xd, código de status 0x4."
"Erro: 17182, Severidade: 16, Estado: 1."
"Falha de inicialização de TDSSNIClient com erro 0xd, código de status 0x1."
"Erro: 17826, Severidade: 18, Estado: 3."
"Impossível iniciar a biblioteca de rede devido a um erro interno na biblioteca. Para determinar a causa, consulte os erros imediatamente anteriores a esse no log de erros."
"Erro: 17120, Severidade: 16, Estado: 1."
"O SQL Server não conseguiu gerar o thread FRunCM. Verifique o log de erros do SQL Server e os logs de eventos do Windows para obter informações sobre possíveis problemas relacionados."
Consulte também