Condividi tramite


Si verificano errori di connessione intermittenti quando si usa l'utilità SQLCMD

Questo articolo consente di risolvere i problemi di connessione intermittente "Errore del sistema operativo 10054" che si verificano quando si usa lo strumento da riga di comando SQLCMD.

Errori

Vengono visualizzati i messaggi di avviso e di errore seguenti:

AVVISO: proc_procname restituito HResult 0x2746, Livello 16, Stato 1

Provider TCP: una connessione esistente è stata chiusa forzatamente dall'host remoto.

SQLCMD.EXE: Sqlcmd: Errore: Microsoft SQL Server Native Client 10.0: Impossibile stabilire la connessione del client

Una possibile causa di questi errori è un driver non supportato.

Domande da considerare

Esaminare gli scenari seguenti per determinare se corrisponde al problema:

  • Si raccoglie una traccia di rete e si apprende che TLS 1.0 e 1.1 sono disabilitati e TLS 1.2 è abilitato. Nel server che esegue SQL Server, TLS 1.0, 1.1 e 1.2 sono abilitati nel server applicazioni.

    Screenshot che mostra che TLS 1.0, 1.1 e 1.2 sono abilitati nel server applicazioni.

  • È possibile eseguire un test UDL nel server applicazioni usando sia il provider Microsoft OLE DB per SQL Server che il provider SNAC 11. La connessione non riesce. Viene inoltre visualizzato un messaggio che indica che il driver "Microsoft OLE DB Provider for SQL Server" è deprecato e non supporta TLS 1.2.

  • Il server applicazioni usa SQL Server Native Client 11 per testare correttamente l'origine dati ODBC. Se SQL Server Native Client 10.0 non è supportato, potrebbe essere visualizzato il messaggio di errore seguente:

    La connessione non è riuscita con stato SQL: '08001' SQL Server Errore: 10054 [Microsoft][SQL Server Native Client 10.0]Provider TCP: una connessione esistente è stata chiusa forzatamente dall'host remoto. [Microsoft] [SQL Server Native Client 10.0] Impossibile stabilire la connessione.

    Questo messaggio potrebbe essere visualizzato perché il server applicazioni usa la versione precedente dell'algoritmo Diffie-Hellman (v1) e SQL Server usa la versione più recente (v2). Questa mancata corrispondenza causa errori TLS intermittenti.

Risoluzione

Per risolvere questi problemi, fare quanto segue:

  1. Specificare SQL Server Native Client 11 nel stringa di connessione.

    Nota

    Microsoft non supporta più SNAC 11. Se si verificano problemi durante l'uso di SNAC 11, è necessario eseguire l'aggiornamento a una versione supportata del driver Microsoft prima di poter fornire il supporto tecnico.

  2. Aggiornare il driver dell'applicazione a un driver supportato.

  3. Usare MSOLEDBSQL v18 o ODBC v17 se non si usa la crittografia per la connessione. Se si usa la crittografia per la connessione nel server applicazioni, usare MSOLEDBSQL v19 o ODBC v18. Per impostazione predefinita, questi driver sono inclusi insieme alla crittografia. Per altre informazioni, vedere gli articoli seguenti:

Vedere anche

Una connessione esistente è stata chiusa forzatamente dall'host remoto (errore del sistema operativo 10054)