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.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per