Risoluzione dei problemi relativi agli errori di protocollo all'avvio del Motore di database

Quando in Motore di database di SQL Server viene rilevato un errore di protocollo durante l'avvio, viene scritto un messaggio di errore nel log degli errori di SQL Server e nel registro eventi di Windows nel formato seguente:

"Errore: 17182, gravità: 16, stato: 1."

"Inizializzazione di TDSSNIClient non riuscita con errore <x>, codice di stato <y>."

In questo messaggio <x> è il codice di errore sottostante restituito dal sottosistema di comunicazione o di protezione e <y> è lo stato di un errore di protocollo interno di SQL Server.

[!NOTA]

Il protocollo Shared Memory e il protocollo Named Pipes condividono alcuni aspetti della loro implementazione. L'esito negativo di un protocollo può infatti determinare l'esito negativo dell'altro protocollo. Se l'errore persiste nonostante il protocollo indicato nel messaggio di errore venga disattivato, provare a riavviare il Motore di database dopo aver disattivato entrambi i protocolli Shared Memory e Named Pipes.

Interpretazione del codice di errore

Il codice di errore sottostante, <x>, in genere è il codice di errore restituito dal livello rete di Windows o da una chiamata a Security Support Provider Interface (SSPI). Per i codici di errore di rete di Windows, l'esecuzione del comando net helpmsg può rivelarsi utile per l'interpretazione del codice. I codici di errore SSPI non sono invece altrettanto facili da decifrare. Può essere necessario eseguire ricerche nella Microsoft Knowledge Base o, se è installato l'SDK del sistema operativo, esaminare il file WinError.h.

Interpretazione del codice di stato degli errori di protocollo

Gli stati degli errori di protocollo di SQL Server sono elencati nella tabella seguente. Si noti che la maggior parte degli stati di errore indica una condizione di errore interno, ma esaminando il valore specifico è possibile ottenere informazioni più dettagliate sulla particolare area di protocollo a cui appartiene l'errore. Ad esempio, se il valore è incluso tra 7 e 30 (0x0A e 0x1E), l'errore proviene dall'elaborazione del protocollo TCP/IP. I codici di stato nel messaggio di errore vengono presentati in formato esadecimale. Nella tabella seguente viene indicato l'equivalente decimale per maggiore chiarezza.

Intervallo di codici di stato in formato esadecimale

Intervallo di codici di stato in formato decimale

Area di protocollo

0x03

3

Shared Memory

0x07-0x1E

7-30

TCP/IP

0x1F-0x23

31-35

Connessione amministrativa dedicata (DAC, Dedicated Administrator Connection)

0x35

53

Named Pipes

0x36

54

VIA (Virtual Interface Adapter)

0x38

56

SSL (Secure Sockets Layer)

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

Generale

Nella tabella seguente vengono elencati alcuni codici di errore comuni.

Codice di stato

Descrizione

0x03

Errore durante l'avvio del supporto Shared Memory

0x04

Tutti i protocolli disattivati

0x0A

Impossibile inizializzare il listener TCP/IP

0x1C

Server configurato per restare in attesa su un indirizzo IP specifico in un ambiente cluster

0x1E

Indirizzo IP duplicato rilevato nella rete

0x35

Errore durante l'avvio del supporto Named Pipes

0x36

Errore durante l'avvio del supporto VIA

0x38

Errore durante il recupero o l'utilizzo del certificato SSL

0x3A

Impossibile inizializzare i listener di comunicazione

0x40

Impossibile inizializzare il listener Shared Memory

0x50

Impossibile inizializzare il listener Named Pipes

0x60

Impossibile inizializzare il listener VIA

0x70

Impossibile inizializzare il listener HTTP

0x80

Impossibile inizializzare il supporto SSL

Esempi

Di seguito viene riportato un esempio di un tipico errore che si verifica durante l'avvio: "Inizializzazione di TDSSNIClient non riuscita con errore 0x80092004, codice di stato 0x38."

Il valore 0x80092004 è un codice di errore SSPI che viene convertito in CRYPT_E_NOT_FOUND. 0x38 è un codice di errore interno che indica che il livello comunicazioni di SQL Server non è in grado di inizializzare il listener. Questo errore viene generato da SSL, quando non è possibile individuare il certificato.

Errori restituiti quando tutti i protocolli sono disattivati

Quando tutti i protocolli sono disattivati è possibile che si verifichino gli errori seguenti:

  • "Errore: 17182, gravità: 16, stato: 1."

    "Inizializzazione di TDSSNIClient non riuscita con errore 0xd, codice di stato 0x4."

  • "Errore: 17182, gravità: 16, stato: 1."

    "Inizializzazione di TDSSNIClient non riuscita con errore 0xd, codice di stato 0x1."

  • "Errore: 17826, gravità: 18, stato: 3."

    "Impossibile avviare la libreria di rete a causa di un errore interno della libreria di rete. Per individuare la causa, nel log degli errori esaminare gli errori immediatamente precedenti."

  • "Errore: 17120, gravità: 16, stato: 1."

    "Impossibile generare il thread FRunCM. Per informazioni sui possibili problemi correlati, vedere il log degli errori di SQL Server e i registri eventi di Windows."