Condividi tramite


Gli utenti potrebbero non essere in grado di connettersi in remoto a SQL Server usando il protocollo TCP/IP

Questo articolo consente di risolvere il problema in cui non è possibile connettersi in remoto a SQL Server usando il protocollo TCP/IP.

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

Sintomi

Quando si usa Microsoft SQL Server, è possibile che vengano visualizzati uno o più dei sintomi seguenti:

  • Solo gli utenti che dispongono dell'autorizzazione CONTROL SERVER (ad esempio, i membri del ruolo predefinito del server syadmin ) sono in grado di connettersi tramite TCP/IP. Gli utenti che non dispongono di questa autorizzazione non possono connettersi in remoto tramite il protocollo TCP/IP usando Windows o l'autenticazione SQL Server.

    Nota

    Si noterà che le connessioni utente con privilegi elevati vengono visualizzate solo nella vista AMV (Dynamic Management View) di sys.dm_exec_sessions (Transact-SQL), ma non nella visualizzazione sys.dm_exec_connections (Transact-SQL).

  • Le connessioni locali e remote che usano il protocollo Named Pipes e le connessioni locali che usano il protocollo di memoria condivisa continuano a funzionare correttamente.

Inoltre, i messaggi seguenti vengono registrati nel file SQL Server Errorlog:

  • All SQL Server avvio:

    Errore: 26023, Gravità: 16, Stato: 1.
    Il provider TCP del server non è in ascolto su ['any'ipv6<> 1963]. La porta TCP è già in uso.
    Errore: 9692, Gravità: 16, Stato: 1.
    Il trasporto del protocollo Service Broker non può essere in ascolto sulla porta 1963 perché è in uso da un altro processo.

  • Per gli accessi non riusciti:

    SQL Server 2008 e versioni successive:

    Errore: 18456, Gravità: 14, Stato: 11.
    Accesso non riuscito per l'utente 'MyDomain\TestAcc'. Motivo: la convalida dell'accesso al server basato su token non è riuscita con un errore dell'infrastruttura. Verificare la presenza di errori precedenti.

Causa

L'errore si verifica quando si configura un endpoint TCP per Service Broker usando la stessa porta configurata per l'uso dell'istanza di SQL Server. È possibile ottenere l'elenco di endpoint eseguendo la query seguente:

SELECT * FROM sys.tcp_endpoints

Nota

Come illustrato nell'argomento della documentazione online su sys.tcp_endpoints (Transact-SQL), questa visualizzazione non contiene informazioni sulle porte e sui protocolli che SQL Server istanza è attualmente configurata per l'uso. Per trovare tali informazioni, vedere Gestione configurazione SQL Server.

Risoluzione

  • Metodo 1: eliminare l'endpoint che causa il problema usando il comando DROP ENDPOINT (Transact-SQL).

    Ad esempio, per eliminare un endpoint denominato TestEP è possibile usare il comando seguente:

    DROP ENDPOINT TestEP
    
  • Metodo 2: modificare l'endpoint per usare una porta diversa usando il comando ALTER ENDPOINT (Transact-SQL).

    Ad esempio, per modificare un endpoint denominato TestEP per usare una porta diversa, è possibile usare il comando seguente:

    ALTER ENDPOINT TestEP as tcp (listener_port=1980)
    

Ulteriori informazioni

Problemi simili possono verificarsi anche con altri endpoint TCP, ad esempio quelli creati per il mirroring del database, e i messaggi di errore all'avvio SQL Server cambieranno di conseguenza.