Si è verificato un errore correlato alla rete o specifico dell'istanza durante la connessione a SQL Server

Si applica a:   SQL Server

Quando ci si connette a un'istanza di SQL Server, è possibile che venga visualizzato uno o più dei messaggi di errore riportati di seguito. Questo articolo illustra alcuni passaggi che consentono di risolvere questi errori, che vengono forniti in ordine di problemi da semplici a complessi.

Messaggi di errore

I messaggi di errore completi variano a seconda della libreria client usata nell'applicazione e nell'ambiente server. È possibile controllare i dettagli seguenti per verificare se viene visualizzato uno dei messaggi di errore seguenti:

provider: Provider Named Pipes, errore: 40 - Impossibile aprire una connessione a SQL Server (Microsoft SQL Server, errore: 53) Si è verificato un errore correlato alla rete o specifico dell'istanza durante la definizione di una connessione a SQL Server. Il server non è stato trovato o non è accessibile. Verificare che il nome dell'istanza sia corretto e che SQL Server sia configurato per consentire connessioni remote.
provider: Provider Named Pipes, errore: 40 - Impossibile aprire una connessione a SQL Server (Microsoft SQL Server, errore: 53)
provider: provider TCP, errore: 0 - Nessun host di questo tipo è noto. (Microsoft SQL Server, Errore: 11001)

provider: interfacce di rete SQL, errore: 26 - Errore durante l'individuazione del server/istanza specificata Si è verificato un errore correlato alla rete o specifico dell'istanza durante la definizione di una connessione a SQL Server. Il server non è stato trovato o non è accessibile. Verificare che il nome dell'istanza sia corretto e che SQL Server sia configurato per consentire connessioni remote.
provider: interfacce di rete SQL, errore: 26 - Errore durante l'individuazione del server/istanza specificata

Timeout di accesso scaduto Errore di collegamento dati SQL Server Native Client
[Microsoft SQL Server Native Client 10.0]: Login timeout expired
[Microsoft SQL Server Native Client 10.0]: A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online.
[Microsoft SQL Server Native Client 10.0]: SQL Server Network Interfaces: Error Locating Server/Instance Specified [xFFFFFFFF].

Tentativo di connessione non riuscito perché la parte connessa non ha risposto correttamente dopo un periodo di tempo o la connessione stabilita non è riuscita perché l'host connesso non è riuscito a rispondere Si è verificato un errore correlato alla rete o specifico dell'istanza durante la definizione di una connessione a SQL Server. Il server non è stato trovato o non è accessibile. Verificare che il nome dell'istanza sia corretto e che SQL Server sia configurato per consentire connessioni remote.
provider: provider TCP, errore: 0
Tentativo di connessione non riuscito perché la parte connessa non ha risposto correttamente dopo un periodo di tempo o la connessione stabilita non è riuscita perché l'host connesso non è riuscito a rispondere.
Microsoft SQL Server, Errore: 10060

provider: Provider Named Pipes, errore: 40 - Impossibile aprire una connessione a SQL Server Si è verificato un errore correlato alla rete o specifico dell'istanza durante la definizione di una connessione a SQL Server. Il server non è stato trovato o non è accessibile. Verificare che il nome dell'istanza sia corretto e che SQL Server sia configurato per consentire connessioni remote.
provider: Provider Named Pipes, errore: 40 - Impossibile aprire una connessione a SQL Server
Microsoft SQL Server, Errore: 53
Il percorso di rete non è stato trovato

[Microsoft] [SQL Server Native Client 11.0]Provider TCP: Impossibile effettuare alcuna connessione perché il computer di destinazione l'ha rifiutata attivamente Errore di collegamento dati SQL Server Native Client
[Microsoft] [SQL Server Native Client 11.0]Provider TCP: non è stato possibile effettuare alcuna connessione perché il computer di destinazione l'ha rifiutata attivamente.
[Microsoft] [SQL Server Native Client 11.0]Timeout dell'accesso scaduto.
[Microsoft] [SQL Server Native Client 11.0]Si è verificato un errore relativo alla rete o specifico dell'istanza durante la definizione di una connessione a SQL Server. Server non trovato o non accessibile. Verificare se il nome dell'istanza è corretto e se SQL Server è configurato per consentire connessioni remote. Per altre informazioni, vedere SQL Server Documentazione online.

<a name="sql-server-does-not-exist-or-access-denied">"SQL Server non esiste o accesso negato"

Questo errore indica in genere che il client non riesce a trovare l'istanza di SQL Server. Questo problema si verifica quando si verifica almeno uno dei problemi seguenti:

  • Il nome del computer che ospita SQL Server non è corretto.
  • L'istanza non risolve l'INDIRIZZO IP corretto.
  • Il numero di porta TCP non è specificato correttamente.

Nota

Per la risoluzione dei problemi di connettività in scenari a disponibilità elevata, vedere gli articoli seguenti:

Raccogliere informazioni per la risoluzione dell'errore

È consigliabile raccogliere le informazioni elencate in questa sezione usando una delle opzioni seguenti prima di procedere con i passaggi effettivi per risolvere l'errore.

Opzione 1: usare lo strumento SQL Check per raccogliere le informazioni necessarie

Se è possibile accedere in locale al computer SQL Server e avere accesso come amministratore, usare SQLCheck dal repository GitHub di Rete SQL Microsoft. Questo strumento fornisce la maggior parte delle informazioni necessarie per la risoluzione dei problemi in un unico file. Per altre informazioni sull'uso dello strumento e sulle informazioni raccolte, vedere la home page dello strumento. È anche possibile controllare i prerequisiti consigliati e la pagina dell'elenco di controllo.

Opzione 2: Raccogliere i dati singolarmente usando le procedure seguenti

Ottenere il nome dell'istanza da Configuration Manager

Nel server che ospita l'istanza di SQL Server usare Gestione configurazione SQL Server per verificare il nome dell'istanza:

Nota

Configuration Manager viene installato automaticamente nel computer quando viene installato SQL Server. Le istruzioni per iniziare Configuration Manager variano leggermente in base alle versioni di SQL Server e Windows. Per informazioni dettagliate specifiche della versione, vedere Gestione configurazione SQL Server.

  1. Accedere al computer che ospita l'istanza di SQL Server.

  2. Avviare Gestione configurazione SQL Server.

  3. Nel riquadro sinistro selezionare SQL Server Servizi.

  4. Nel riquadro a destra verificare il nome dell'istanza del motore di database.

    • SQL SERVER (MSSQLSERVER) indica un'istanza predefinita di SQL Server. Il nome dell'istanza predefinita è <computer name>.
    • SQL SERVER (<instance name>) indica un'istanza denominata di SQL Server. Il nome dell'istanza denominata è <computer name>\<instance name>.

Ottenere l'indirizzo IP del server

È possibile usare la procedura seguente per ottenere l'indirizzo IP del computer che ospita l'istanza di SQL Server.

  1. Scegliere Esegui dal menu Start. Nella finestra Esegui digitare cmd e quindi selezionare OK.

  2. Nella finestra del prompt dei comandi digitare ipconfig/all e quindi premere INVIO. Annotare l'indirizzo IPv4 e l'indirizzo IPv6.

    Nota

    SQL Server può connettersi usando il protocollo IP versione 4 o IP versione 6. La rete può consentire uno o entrambi.

Ottenere la porta TCP dell'istanza

Nella maggior parte dei casi, ci si connette al motore di database in un altro computer usando il protocollo TCP. Per ottenere la porta TCP dell'istanza, seguire questa procedura:

  1. Usare SQL Server Management Studio nel computer che esegue SQL Server e connettersi all'istanza di SQL Server. In Esplora oggetti espandere Gestione, SQL Server Log e quindi fare doppio clic sul log corrente.

  2. Nel Visualizzatore file di log selezionare Filtro sulla barra degli strumenti. Nella casella di testo Message contains (Messaggio contiene ) digitare server in ascolto, selezionare Applica filtro e quindi selezionare OK.

  3. Deve essere elencato un messaggio come Server in ascolto su [ 'any' <ipv4> 1433].

    Questo messaggio indica che l'istanza di SQL Server è in ascolto su tutti gli indirizzi IP del computer (per IP versione 4) e sulla porta TCP 1433. La porta TCP 1433 è in genere la porta usata dal motore di database o dall'istanza predefinita di SQL Server. Solo un'istanza di SQL Server può usare questa porta. Se è installata più di un'istanza di SQL Server, alcune istanze devono usare altri numeri di porta. Prendere nota del numero di porta usato dall'istanza di SQL Server a cui si sta tentando di connettersi.

    Nota

    • L'indirizzo IP 127.0.0.1 è probabilmente elencato. Viene chiamato indirizzo dell'adattatore loopback. Solo i processi nello stesso computer possono usare l'indirizzo IP per connettersi.
    • È anche possibile visualizzare il log degli errori SQL Server usando un editor di testo. Per impostazione predefinita, il log degli errori si trova nei file Programmi\Microsoft SQL Server\MSSQL.n\MSSQL\LOG\ERRORLOG e ERRORLOG.n. Per altre informazioni, vedere Visualizzazione del log degli errori SQL Server.

Passaggio 1:Verificare che l'istanza sia in esecuzione

Opzione 1: Uso del file di output dello strumento SQLCheck

  1. Cercare "informazioni SQL Server" nell'output del file SQLCheck.

  2. Nella sezione intitolata "Servizi di interesse" individuare l'istanza di SQL Server in Colonne Nome e istanza (per le istanze denominate) e controllarne lo stato usando la colonna Avviato. Se il valore è True, i servizi vengono avviati. In caso contrario, il servizio non è attualmente in esecuzione.

  3. Se il servizio non è in esecuzione, avviare il servizio usando SQL Server Management Studio, SQL Server Configuration Manager, PowerShell o l'applet Services.

Opzione 2: Usare Gestione configurazione SQL Server

Per verificare che l'istanza sia in esecuzione, selezionare SQL Server Services in Gestione configurazione SQL Server e controllare il simbolo dall'istanza di SQL Server.

  • Una freccia verde indica che un'istanza è in esecuzione.
  • Un quadrato rosso indica che un'istanza viene arrestata.

Se l'istanza viene arrestata, fare clic con il pulsante destro del mouse sull'istanza e scegliere Avvia. Viene quindi avviata l'istanza del server e l'indicatore diventa una freccia verde.

Opzione 3: Usare i comandi di PowerShell

È possibile usare il comando seguente in PowerShell per controllare lo stato dei servizi SQL Server nel sistema:

Get-Service | Where {$_.status -eq 'running' -and $_.DisplayName -match "sql server*"}

È possibile usare il comando seguente per cercare nel file di log degli errori la stringa specifica "SQL Server è ora pronta per le connessioni client. Si tratta di un messaggio informativo; non è richiesta alcuna azione utente.":

Get-ChildItem -Path "c:\program files\microsoft sql server\mssql*" -Recurse -Include Errorlog |select-string "SQL Server is now ready for client connections."

Passaggio 2: Verificare che il servizio browser di SQL Server sia in esecuzione

Nota

Questo passaggio è necessario solo per la risoluzione dei problemi di connettività con le istanze denominate.

Opzione 1: Uso del file di output dello strumento SQLCheck

  1. Cercare "informazioni SQL Server" nell'output del file SQLCheck.

  2. Nella sezione "Servizi di interesse" cercare SQLBrowser nella colonna Nome e controllarne lo stato usando la colonna Avviato . Se il valore è True, il servizio viene avviato. In caso contrario, il servizio non è attualmente in esecuzione ed è necessario avviarlo. Per altre informazioni, vedere Avviare, arrestare, sospendere, riprendere, riavviare SQL Server servizi.

Opzione 2: Usare Gestione configurazione SQL Server

Per connettersi a un'istanza denominata, il servizio browser SQL Server deve essere in esecuzione. In Gestione configurazione SQL Server individuare il servizio browser SQL Server e verificare che sia in esecuzione. Se non è in esecuzione, avviare il servizio. Il servizio SQL Server Browser non è necessario per le istanze predefinite.

Per altre informazioni sull'uso del servizio browser SQL Server nell'ambiente, vedere SQL Server Servizio Browser.

Per altre informazioni sull'arresto e l'avvio di SQL Services, vedere Avviare, arrestare, sospendere, riprendere, riavviare SQL Server servizi.

Nota

Se il servizio SQL Server Browser non è in esecuzione nell'ambiente, vedere Connessione a un'istanza denominata di SQL Server senza SQL Server servizio browser.

Passaggio 3: Verificare il nome del server nella stringa di connessione

Si verificano spesso errori quando nella stringa di connessione viene specificato un nome di server non corretto. Assicurarsi che il nome del server corrisponda a quello recuperato nei passaggi precedenti.

Nota

Se si usa lo strumento SQLCheck, esaminare i valori Nome NetBios/FQDN nella sezione Informazioni computer del file di output.

Passaggio 4: Verificare gli alias nei computer client

Gli alias vengono spesso usati negli ambienti client quando ci si connette a SQL Server con un nome alternativo o quando si verificano problemi di risoluzione dei nomi nella rete. Vengono creati usando Gestione configurazione SQL Server o l'utilità di rete client. Un alias errato può causare la connessione delle connessioni delle applicazioni al server errato, causando un errore. Usare i metodi seguenti per verificare la presenza di alias non corretti. È anche possibile usare uno strumento (ad esempio SQLCHECK) nel computer client per verificare la presenza di alias e varie altre impostazioni correlate alla connettività in un computer client.

Nota

Le opzioni seguenti si applicano solo alle applicazioni che usano SQL Server Native Client per connettersi a SQL Server.

Opzione 1: Uso del file di output dello strumento SQLCheck

  1. Nel file di output SQLCheck cercare la stringa Alias SQL. Questa stringa si troverà all'interno della sezione Client Security and Driver Information del file.

  2. Esaminare le voci nella tabella. Se non è presente alcun alias, nel computer non sono presenti alias. Se è presente una voce, esaminare le informazioni per assicurarsi che il nome del server e il numero di porta siano impostati sui valori corretti.

Output di esempio:
Alias SQL:

Alias Name   Protocol   Server Name     Port   32-bit 

----------   --------   ------------    ----   ------ 

prodsql      TCP        prod_sqlserver  1430      

Quanto sopra indica che prodsql è un alias per un SQL Server chiamato prod_sqlserver in esecuzione sulla porta 1430.

Opzione 2: Controllare gli alias in Gestione configurazione SQL Server

  1. In Gestione configurazione SQL Server espandere SQL Server Native Client Configurazione e selezionare Alias.
  2. Controllare se sono stati definiti alias per il server a cui si sta tentando di connettersi. Se gli alias esistono, seguire questa procedura:
    1. Aprire il riquadro Proprietà dell'alias.
    2. Rinominare il valore nel campo Alias Name (ad esempio, se il nome del server è MySQL, rinominarlo come MySQL_test) e ripetere la connessione. Se la connessione funziona, l'alias non è corretto e potrebbe provenire da una configurazione precedente che non è più necessaria. Se la connessione non funziona, rinominare l'alias con il nome originale e passare al passaggio successivo.
    3. Controllare i parametri di connessione per l'alias e assicurarsi che siano corretti. Gli scenari comuni seguenti possono causare problemi di connettività:
      • Indirizzo IP non corretto per il campo Server . Assicurarsi che l'indirizzo IP corrisponda alla voce nel file di log degli errori SQL Server.

      • Nome del server non corretto nel campo Server . Ad esempio, l'alias del server punta al nome del server corretto. Tuttavia, le connessioni avranno esito negativo se il valore del parametro del nome del server non è corretto.

      • Formato del nome della pipe non corretto (presupponendo che si usi un alias named pipe).

        • Quando ci si connette a un'istanza predefinita denominata Mydefaultinstance, il nome della pipe deve essere \\Mydefaultinstance\pipe\sql\query.
        • Quando ci si connette a un'istanza denominata MySQL\Named, il nome della pipe deve essere \\MySQL\pipe\MSSQL$Named\sql\query.

Opzione 3: Controllare gli alias nell'utilità di rete client SQL Server

  1. Aprire SQL Server'utilità di rete client digitando cliconfg.exe nel comando Esegui.
  2. Seguire il passaggio 2 in Opzione 2: Controllare gli alias in Gestione configurazione SQL Server.

Passaggio 5: Verificare la configurazione del firewall

È possibile verificare la configurazione del firewall a seconda dell'istanza predefinita o dell'istanza denominata.

Nota

Se si usano firewall di terze parti nella rete, i concetti vengono comunque applicati. Potrebbe tuttavia essere necessario collaborare con l'amministratore di rete o consultare la documentazione del prodotto firewall per altre informazioni sulla configurazione del firewall per consentire le porte necessarie per la comunicazione con SQL Server.

Istanza predefinita di SQL Server

Un'istanza predefinita viene in genere eseguita sulla porta 1433. Alcune installazioni usano anche una porta non standard (diversa da 1433) per eseguire istanze SQL. Il firewall può bloccare entrambe le porte. Per controllare ulteriormente il numero di porta, seguire questa procedura:

  1. Determinare la porta su cui è in esecuzione l'istanza di SQL. Vedere Ottenere la porta TCP dell'istanza.
  • Se il SQL Server è configurato per l'ascolto sulla porta 1433, assicurarsi che i firewall nella rete tra il client e il server consentano il traffico su tale porta. Vedere Configurare windows firewall per l'accesso al motore di database e collaborare con l'amministratore di rete per implementare le soluzioni necessarie.

  • Se l'istanza predefinita di SQL Server non usa 1433, provare ad aggiungere il numero di porta di SQL Server al nome del server usando il formato <servername>,<portnumber> e verificare se funziona. Ad esempio, il nome dell'istanza SQL è MySQLDefaultinstance ed è in esecuzione sulla porta 2000. Specificare il nome del server come MySQLServer, 2000 e verificare se funziona.

  • Se non funziona, indica che il firewall sta bloccando la porta. È possibile seguire le istruzioni riportate in Configurare windows firewall per l'accesso al motore di database o collaborare con l'amministratore di rete per aggiungere la porta all'elenco di esclusione del firewall.

    • Se funziona, indica che il firewall consente la comunicazione tramite tale porta. È necessario modificare la stringa di connessione per usare il numero di porta e il nome del server nella stringa di connessione dell'applicazione.

Istanza denominata di SQL Server

Se l'istanza di SQL è un'istanza denominata, può essere configurata per l'uso di porte dinamiche o di una porta statica. In entrambi i casi, le librerie di rete sottostanti eseguono query sul servizio SQL Server Browser in esecuzione nel computer SQL Server tramite la porta UDP 1434 per enumerare il numero di porta per l'istanza denominata. Se un firewall tra il client e il server blocca questa porta UDP, la libreria client non è in grado di determinare la porta (un requisito per la connessione) e la connessione ha esito negativo. Per controllare la connessione, è possibile usare uno dei metodi seguenti:

  • Metodo 1: Controllare la connessione specificando il numero di porta nella stringa di connessione.

    1. Determinare la porta su cui è in esecuzione l'istanza di SQL. Vedere Ottenere la porta TCP dell'istanza.

    2. Provare a connettersi all'istanza denominata usando il numero di porta aggiunto al nome del server nel formato <servername\instancename>,<portnumber> e verificare se funziona. Ad esempio, se il nome dell'istanza SQL è MySQL\Namedinstance ed è in esecuzione sulla porta 3000, specificare il nome del server come MySQL\Namedinstance,3000.

      • Se funziona, indica che il firewall blocca la porta UDP 1434 o che l'istanza è nascosta da SQL Server Browser.

      • Se non funziona, indica una delle situazioni seguenti:

        • La porta UDP 1434 è bloccata o la porta statica è bloccata o entrambe. Per verificare se si tratta della porta UDP o della porta statica, usare Portqry.

        • L'istanza è nascosta dal servizio SQL Server Browser.

  • Metodo 2: controllare la connessione usando lo strumento PortQryUI.

    Usare lo strumento PortQryUI con l'istanza denominata e osservare l'output risultante. È possibile che venga visualizzato un messaggio che indica che la porta UDP 1434 è filtrata. Questo messaggio indica che la porta è bloccata nella rete. Per istruzioni su come usare lo strumento, vedere Uso dello strumento PortQryUI con SQL Server.

    Determinare se l'istanza di SQL Server è in ascolto su porte dinamiche o statiche. Usare quindi il metodo seguente rilevante per lo scenario. Se non si è certi, vedere Come verificare se SQL Server è in ascolto su una porta dinamica o statica.

    • Scenario 1: porte dinamiche. In questo caso, assicurarsi che il servizio SQL Server Browser sia avviato e che la porta UDP 1434 non sia bloccata nel firewall tra il client e il server. Se non è possibile eseguire una di queste operazioni, è consigliabile passare l'istanza di SQL Server a una porta statica e usare la procedura descritta in Configurare un server per l'ascolto su una porta TCP specifica.

    • Scenario 2: configurazione della porta statica. SQL Server Browser non è in esecuzione o UDP 1434 non può essere aperto nel firewall. In questo caso, assicurarsi di specificare la porta statica nella stringa di connessione e che il firewall non blocchi la porta. Per altre informazioni, vedere Configurare un Windows Firewall per l'accesso al motore di database.

Passaggio 6: Verificare i protocolli abilitati in SQL Server

In alcune installazioni di SQL Server, le connessioni al motore di database da un altro computer non vengono abilitate a meno che non vengano abilitate manualmente da un amministratore. È possibile usare una delle opzioni seguenti per controllare e abilitare i protocolli necessari per consentire le connessioni remote a SQL Server motore di database.

Opzione 1: Uso del file di output dello strumento SQLCheck

  1. Cercare la sezione "Dettagli dell'istanza di SQL Server" nel file di output di SQLCheck e individuare la sezione delle informazioni relativa all'istanza di SQL Server.

  2. Nella sezione individuare i valori elencati nella tabella seguente per determinare se i protocolli SQL Server sono abilitati:

    Nome valore Implicazione Ulteriori informazioni
    Memoria condivisa abilitata Può essere true di false. Influisce solo sulle connessioni locali. Creazione di una stringa di connessione valida tramite il protocollo di memoria condivisa
    Named Pipes abilitato Se false, le connessioni locali e remote che usano named pipe avranno esito negativo Scelta di un protocollo di rete
    TCP abilitato Se false, le connessioni locali e remote che usano TCP/IP avranno esito negativo.
    Nota La maggior parte delle installazioni SQL Server usa TCP/IP come protocollo di comunicazione tra il server e il client.
    Scelta di un protocollo di rete
  3. Abilitare i protocolli necessari usando Gestione configurazione SQL Server o SQL Server PowerShell. Per altre informazioni, vedere Abilitare o disabilitare un protocollo di rete del server.

    Nota

    Dopo aver abilitato un protocollo, il motore di database deve essere arrestato e riavviato per rendere effettiva la modifica.

Opzione 2: Usare Gestione configurazione SQL Server

Per abilitare le connessioni da un altro computer usando il Gestione configurazione SQL Server, seguire questa procedura:

  1. Aprire il Gestione configurazione SQL Server.

  2. Nel riquadro sinistro espandere SQL Server Configurazione di rete e quindi selezionare l'istanza di SQL Server a cui connettersi. Nel riquadro di destra sono elencati i protocolli di connessione disponibili. La memoria condivisa è in genere abilitata. Può essere usato solo dallo stesso computer, quindi la maggior parte delle installazioni lascia abilitata la memoria condivisa . Per connettersi a SQL Server da un altro computer, usare TCP/IP. Se TCP/IP non è abilitato, fare clic con il pulsante destro del mouse su TCP/IP e quindi scegliere Abilita.

  3. Se si modifica l'impostazione abilitata per qualsiasi protocollo, riavviare il motore di database. Nel riquadro sinistro selezionare SQL Server Servizi. Nel riquadro destro fare clic con il pulsante destro del mouse sull'istanza del motore di database e quindi scegliere Riavvia.

Passaggio 7: Testare la connettività TCP/IP

La connessione a SQL Server tramite TCP/IP richiede che Windows stabilisca la connessione. È possibile usare la procedura seguente per testare la connettività TCP usando lo strumento ping.

  1. Scegliere Esegui dal menu Start. Nella finestra Esegui digitare cmd e selezionare OK.

  2. Nella finestra del prompt dei comandi digitare ping e l'indirizzo IP del computer che esegue SQL Server. Ad esempio:

    • IPv4: ping 192.168.1.101
    • IPv6: ping fe80::d51d:5ab5:6f09:8f48%11
  3. Se la rete è configurata correttamente, ping restituisce Reply from <IP address> seguito da alcune informazioni aggiuntive. Se ping restituisce Destination host unreachable o Request timed out, TCP/IP non è configurato correttamente. Gli errori a questo punto indicano un problema con il computer client, il computer server o qualcosa sulla rete, ad esempio un router. Per risolvere i problemi di rete, vedere Risoluzione avanzata dei problemi relativi a TCP/IP.

  4. Se il ping test ha esito positivo usando l'indirizzo IP, verificare se il nome del computer può essere risolto nell'indirizzo TCP/IP. Nella finestra del prompt dei comandi del computer client digitare ping e il nome del computer che esegue SQL Server. Ad esempio, ping newofficepc.

  5. Se il ping all'indirizzo IP ha esito positivo, ma il ping al nome del computer restituisce Destination host unreachable o Request timed out, è possibile che le informazioni sulla risoluzione dei nomi precedenti (non aggiornate) siano memorizzate nella cache nel computer client. Digitare ipconfig /flushdns per cancellare la cache DNS (Dynamic Name Resolution). Eseguire quindi di nuovo il ping del computer in base al nome. Quando la cache DNS è vuota, il computer client controlla le informazioni più recenti sull'indirizzo IP del computer server.

  6. Se la rete è configurata correttamente, ping restituisce Reply from <IP address> seguito da alcune informazioni aggiuntive. Se è possibile eseguire correttamente il ping del computer server tramite indirizzo IP, ma si riceve un errore come Destination host unreachable o Request timed out durante il ping in base al nome del computer, la risoluzione dei nomi non è configurata correttamente. Per altre informazioni, vedere Come risolvere i problemi TCP/IP di base. La risoluzione dei nomi non è necessaria per connettersi a SQL Server. Tuttavia, se il nome del computer non può essere risolto in un indirizzo IP, è necessario effettuare connessioni per specificare l'indirizzo IP. La risoluzione dei nomi può essere risolta in un secondo momento.

Nota

È anche possibile usare il cmdlet Test-NetConnection o Test-Connection per testare la connettività TCP in base alla versione di PowerShell installata nel computer. Per altre informazioni sul cmdlet di PowerShell, vedere Panoramica dei cmdlet.

Passaggio 8: Testare la connessione locale

Prima di risolvere un problema di connessione da un altro computer, testare la possibilità di connettersi da un'applicazione client installata localmente nel computer che esegue SQL Server. La connessione locale evita problemi con reti e firewall.

Questa procedura richiede SQL Server Management Studio. Se Management Studio non è installato, vedere Scaricare SQL Server Management Studio (SSMS).

Se non è possibile installare Management Studio, è possibile testare la connessione usando l'utilità sqlcmd.exe . sqlcmd.exe viene installato con il motore di database. Per informazioni su sqlcmd.exe, vedere Utilità sqlcmd.

  1. Accedere al computer in cui è installato SQL Server usando un account di accesso che può accedere a SQL Server. Durante l'installazione, SQL Server richiede che sia specificato almeno un account di accesso come amministratore SQL Server. Se non si conosce un amministratore, vedere Connettersi a SQL Server quando gli amministratori di sistema sono bloccati.

  2. Nella pagina Start digitare SQL Server Management Studio oppure nel menu Start delle versioni precedenti di Windows selezionare Tutti i programmi, Microsoft SQL Server e quindi selezionare SQL Server Management Studio.

  3. Nel menu a discesa Connetti selezionare Motore di database. Nella casella Autenticazione selezionare Autenticazione di Windows. Nella casella Nome server digitare uno dei tipi di connessione seguenti:

    Connessione a Tipo Esempio
    Istanza predefinita <computer name> ACCNT27
    Istanza denominata <computer name\instance name> ACCNT27\PAYROLL

    Nota

    Quando ci si connette a SQL Server da un'applicazione client nello stesso computer, viene usato il protocollo di memoria condivisa. La memoria condivisa è un tipo di named pipe locale, quindi a volte si verificano errori correlati alle pipe.

  4. Se a questo punto viene visualizzato un errore, è necessario risolverlo prima di procedere. L'accesso potrebbe non essere autorizzato a connettersi. Il database predefinito potrebbe non essere presente.

    Nota

    Non è possibile risolvere il problema senza informazioni sufficienti perché alcuni messaggi di errore vengono passati intenzionalmente al client. Si tratta di una funzionalità di sicurezza per evitare di fornire a un utente malintenzionato informazioni sulle SQL Server. Per visualizzare i dettagli sull'errore, vedere il log degli errori SQL Server.

  5. Se viene visualizzato l'errore 18456 Accesso non riuscito per l'utente, l'articolo della documentazione online MSSQLSERVER_18456 contiene informazioni aggiuntive sui codici di errore. Il blog di Aaron Bertrand contiene anche un elenco completo di codici di errore in Risoluzione dei problemi relativi all'errore 18456 (collegamento esterno). È possibile visualizzare il log degli errori usando SSMS (se è possibile connettersi) nella sezione Gestione del Esplora oggetti. In caso contrario, è possibile visualizzare il log degli errori con il programma Blocco note di Windows. Il percorso predefinito varia in base alla versione e può essere modificato durante l'installazione. Il percorso predefinito per SQL Server 2019 (15.x) è C:\Programmi\Microsoft SQL Server\MSSQL15. MSSQLSERVER\MSSQL\Log\ERRORLOG.

  6. Se è possibile connettersi usando la memoria condivisa, testare la connessione tramite TCP. È possibile forzare una connessione TCP specificando tcp: prima del nome. Ecco gli esempi:

    Connessione a: Digitare: Esempio:
    Istanza predefinita tcp:<computer name> tcp:ACCNT27
    Istanza denominata tcp:<computer name/instance name> tcp:ACCNT27\PAYROLL
  7. Se è possibile connettersi usando la memoria condivisa ma non TCP, è necessario risolvere il problema TCP. Il problema più probabile è che TCP non sia abilitato. Per abilitare TCP, vedere Passaggio 6: Verificare i protocolli abilitati in SQL Server.

  8. Se l'obiettivo è connettersi usando un account diverso da un account amministratore, è possibile iniziare connettendosi come amministratore. Provare quindi a connettersi di nuovo con l'account di accesso autenticazione di Windows o l'account di accesso SQL Server Authentication usato dall'applicazione client.

Passaggio 9: Testare la connessione remota

Una volta che è possibile connettersi usando TCP nello stesso computer, è il momento di provare a connettersi dal computer client. È possibile usare qualsiasi applicazione client, ma per evitare complessità, installare gli strumenti di gestione SQL Server nel client. Dopo l'installazione, provare a usare SQL Server Management Studio.

  1. Usare SQL Server Management Studio nel computer client e provare a connettersi usando l'indirizzo IP e il numero di porta TCP nel formato Indirizzo IP numero porta virgola. Ad esempio, 192.168.1.101,1433. Se la connessione non riesce, probabilmente si verifica uno dei problemi seguenti:

  2. Dopo aver eseguito la connessione usando l'indirizzo IP e il numero di porta, esaminare gli scenari seguenti:

    • Se ci si connette a un'istanza predefinita in ascolto su qualsiasi porta diversa da 1433, è necessario usare il numero di porta nella stringa di connessione o creare un alias nel computer client per connettersi all'istanza predefinita. Il servizio SQL Server Browser non può enumerare le porte dell'istanza predefinita.

    • Se ci si connette a un'istanza denominata, provare a connettersi all'istanza nel formato indirizzo IP nome istanza barra rovesciata. (Ad esempio, 192.168.1.101\<instance name>.) Se questa azione non funziona, significa che il numero di porta non viene restituito al client. Il problema è correlato al servizio SQL Server Browser, che fornisce al client il numero di porta di un'istanza denominata. Ecco le soluzioni:

      • Avviare il servizio SQL Server Browser. Vedere le istruzioni per avviare il browser in Gestione configurazione SQL Server.
      • Il servizio browser SQL Server viene bloccato dal firewall. Aprire la porta UDP 1434 nel firewall. Indietro alla sezione Passaggio 5: Verificare la configurazione del firewall. Assicurarsi di aprire una porta UDP, non una porta TCP.
      • Le informazioni sulla porta UDP 1434 vengono bloccate da un router. La comunicazione UDP (protocollo datagramma utente) non è progettata per passare attraverso i router e impedisce alla rete di essere riempita con traffico con priorità bassa. È possibile configurare il router per inoltrare il traffico UDP oppure specificare il numero di porta ogni volta che ci si connette.
      • Se il computer client usa Windows 7, Windows Server 2008 o un sistema operativo più recente, il sistema operativo client potrebbe eliminare il traffico UDP perché la risposta del server viene restituita da un indirizzo IP diverso sottoposto a query. Questa azione è una funzionalità di sicurezza che blocca il "mapping dell'origine libera". Per altre informazioni, vedere la sezione Indirizzi IP di più server dell'articolo Risoluzione dei problemi: Timeout scaduto. Questo articolo proviene da SQL Server 2008 R2, ma le entità sono ancora valide. È possibile configurare il client in modo da usare l'indirizzo IP corretto o specificare il numero di porta ogni volta che ci si connette.
  3. Dopo aver eseguito la connessione usando l'indirizzo IP (o l'indirizzo IP e il nome dell'istanza per un'istanza denominata), provare a connettersi usando il nome computer (o il nome del computer e il nome dell'istanza per un'istanza denominata). Posizionare tcp: prima del nome del computer per forzare una connessione TCP/IP. Ad esempio, per l'istanza predefinita in un computer denominato ACCNT27, usare tcp:ACCNT27. Per un'istanza denominata denominata PAYROLL, in tale computer usare tcp:ACCNT27\PAYROLL. Se è possibile connettersi usando l'indirizzo IP, ma non usando il nome del computer, si verifica un problema di risoluzione dei nomi. Indietro alla sezione Passaggio 7: Testare la connettività TCP/IP.

  4. Una volta che è possibile connettersi usando il nome del computer forzato TCP, provare a connettersi usando il nome del computer senza forzare TCP. Ad esempio, per un'istanza predefinita e usare semplicemente un nome di computer, ad esempio CCNT27. Per un'istanza denominata, usare il nome del computer e il nome dell'istanza, ad esempio ACCNT27\PAYROLL. Se è possibile connettersi forzando TCP, ma non senza forzare TCP, il client probabilmente usa un altro protocollo, ad esempio named pipe. Per risolvere questo problema, seguire questa procedura:

    1. Nel computer client usare Gestione configurazione SQL Server. Nel riquadro sinistro espandere Configurazione sql native client <version> e quindi selezionare Protocolli client.
    2. Nel riquadro destro verificare che TCP/IP sia abilitato. Se TCP/IP è disabilitato, fare clic con il pulsante destro del mouse su TCP/IP e scegliere Abilita.
    3. Assicurarsi che l'ordine di protocollo per TCP/IP sia un numero inferiore rispetto ai protocolli named pipe (o VIA nelle versioni precedenti). In genere, è consigliabile lasciare la memoria condivisa come ordine 1 e TCP/IP come ordine 2. La memoria condivisa viene usata solo quando il client e SQL Server sono in esecuzione nello stesso computer. Tutti i protocolli abilitati vengono provati in ordine fino a quando uno non riesce, ma la memoria condivisa viene ignorata quando la connessione non si trova nello stesso computer.

Vedere anche