SQL Server client possono modificare i protocolli quando i computer client tentano di connettersi a un'istanza di SQL Server

Questo articolo introduce SQL Server client possono modificare i protocolli quando i computer client tentano di connettersi a un'istanza di SQL Server.

Versione originale del prodotto: SQL Server
Numero KB originale: 328383

Riepilogo

I computer client con Microsoft Data Access Components (MDAC) versione 2.6 o successiva possono provare più protocolli o meccanismi IPC (Interprocess Communication) per stabilire connessioni a SQL Server.

Ulteriori informazioni

È stato apportato un miglioramento alla libreria di rete lato client, Dbnetlib.dll per MDAC versione 2.6 e successive. Con MDAC versione 2.6 e successive, se sono disponibili più protocolli e un tentativo di connessione con il primo protocollo ha esito negativo, l'applicazione client tenta immediatamente di usare uno degli altri protocolli.

Per impostazione predefinita, i client hanno TCP e Named Pipes come protocolli disponibili. È possibile modificare l'ordinamento del protocollo usando l'utilità client SQL Server. L'applicazione client usa i protocolli nell'ordine specificato nel computer client. L'ordine di protocollo viene archiviato nella seguente posizione della chiave del Registro di sistema nel valore ProtocolOrder:

HKLM\Software\Microsoft\MSSQLServer\Client\SuperSocketNetLib

Se si usa SQL Server 2005, l'ordine di protocollo viene archiviato nella voce del Registro di sistema ProtocolOrder nella sottochiave del Registro di sistema seguente:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI<version>

Ad esempio, se un computer client ha sia TCP che Named Pipes disponibili e l'ordine è:

  • TCP
  • Named Pipe

Quando il computer client tenta di stabilire una connessione TCP al server e il tentativo di connessione restituisce un codice restituito diverso da zero, il client tenta in modo trasparente una connessione usando il protocollo successivo nell'elenco, ovvero Named Pipes. In questo scenario, il client non può stabilire una connessione TCP; tuttavia, il client esegue correttamente una connessione Named Pipes.

Nota

Il client non riceve un errore che indica che il primo protocollo non è riuscito.

Se l'applicazione client usa il secondo protocollo e restituisce anche un errore, viene restituito un errore al client.

Se si crea un alias usando uno dei metodi seguenti, l'applicazione client usa le informazioni alias per stabilire una connessione al server e non usa protocolli aggiuntivi.

  • Usando l'utilità di rete client SQL Server
  • Usando Gestione configurazione SQL Server
  • Quando si crea un nome di origine dati ODBC (DSN)

Se si vuole controllare il protocollo usato da un'applicazione client per ogni tentativo di connessione e non consentire al client di provare più protocolli, è possibile eseguire una delle operazioni seguenti:

  • Usare l'utilità o Gestione configurazione SQL Server di rete client SQL per creare un alias specificando il protocollo preferito.

  • Specificare il protocollo nel stringa di connessione. Ad esempio:

    DSN=DSNName;SERVER=servername;DATABASE=YourDataBaseName;Network=DBMSSOCN;Address=IP_Address,1433;UID=YourUID;PWD=YourPassword;
    

    In questo esempio si specifica il protocollo di rete come DBMSSOCN, ovvero si vuole usare il protocollo TCP/IP. Se si specifica il protocollo all'interno del stringa di connessione, Dbnetlib usa solo il protocollo specificato e non prova nessun altro protocollo. Analogamente, per abilitare solo il protocollo Named Pipe, usare un stringa di connessione simile al seguente:

    DSN=DSNName;SERVER=servername;DATABASE=YourDataBaseName;Network=DBNMPNTW;Address=\\.\pipe\sql\query;UID=YourUID;PWD=YourPassword;
    
  • Usare l'utilità Rete client per rimuovere altri protocolli.

RIFERIMENTI

Risoluzione degli errori di connettività per SQL Server