Condividi tramite


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

Questo articolo illustra come 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 tramite l'autenticazione di Windows o SQL Server.

    Note

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

  • Sia le connessioni locali che 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 di log degli errori di SQL Server:

  • All'avvio di SQL Server:

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

  • Per gli account di accesso non riusciti:

    SQL Server 2008 e versioni successive:

    Errore: 18456, gravità: 14, stato: 11.
    Accesso non riuscito per l'utente 'MyDomain\TestAcc'. Motivo: convalida dell'accesso al server basato su token non riuscita. Errore di infrastruttura. Controllare 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 degli endpoint eseguendo la query seguente:

SELECT * FROM sys.tcp_endpoints

Note

Come illustrato nella documentazione online di sys.tcp_endpoints (Transact-SQL), questa vista non contiene informazioni sulle porte e sui protocolli attualmente configurati per l'uso dell'istanza di SQL Server. 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

Possono verificarsi problemi simili anche con altri endpoint TCP come quelli creati per il mirroring del database e i messaggi di errore all'avvio di SQL Server cambieranno di conseguenza.