2009-06-23 8 views
11

Continuiamo a ricevere questo errore in modo casuale nella nostra applicazione web.Perché dovrei ricevere questo errore a intermittenza? "Il server non è stato trovato o non era accessibile"

System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)

Avrebbe senso se abbiamo ottenuto l'errore mai tempo, ma per farlo in modo intermittente suggerire qualcos'altro sta succedendo.

Qualcuno ha provato questo? Qualche suggerimento o teorie?

Grazie!

+1

si verifica durante la finestra di backup di SQL Server? –

+2

altrimenti potrei sospettare una scheda NIC o un router/switch difettoso –

+1

come qualcuno ha suggerito, il tuo server SQL ha mai esaurito la CPU o la memoria? suggerire di pubblicare la configurazione hardware ... –

risposta

6

È possibile che il server sia troppo occupato per rispondere: si sta utilizzando SQL Express o Workgroup Edition? Inoltre, quante connessioni alla volta ha questo server? Questo errore si verifica su tutte le connessioni in un determinato momento oppure alcune connessioni vengono rifiutate mentre altre riescono contemporaneamente?

Inoltre, se si esegue un "PING -t Servername" e lo si guarda, ogni ping viene ripristinato o è stato perso? Questo può essere un indicatore delle interruzioni di rete che potrebbero anche causare questo errore.

4

L'ho visto prima quando stavo accedendo a un server remoto in un'altra posizione. Sospettavo che fosse dovuto alla configurazione del router tra i due siti così com'era, diciamo, cludgy. È possibile che lo si ottenga a causa di una configurazione di rete o di un hardware non funzionante, ma non vorrei saltare a quella conclusione finché non esaurirai molte altre possibilità.

5

Abbiamo avuto questo a causa di troppi firewall: più lontano il cliente (ad esempio HK o NY, siamo in Svizzera) più spesso è successo. Londra: raramente. Svizzera: mai. Ci è stato spiegato (tramite la nostra ingegneria DB e l'aiuto MS) che i ritardi a causa di router e firewall a volte hanno sconvolto Kerberos e/o tempistiche correlate.

Correzione: utilizzare la porta nella stringa di connessione. Ciò evita il roundtrip alla porta 1434 per enumerare l'istanza. Abbiamo già utilizzato FQDN.

Esempio: server.domain.tld \ esempio, porta

YNNV naturalmente, ma ha funzionato per noi

4

ho avuto lo stesso problema; abbiamo anche questo:

System.Data.SqlClient.SqlException: An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)

e questo:

System.Data.SqlClient.SqlException: A transport-level error has occurred when sending the request to the server. (provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.)

Il primo è stato particolarmente strano, come non eravamo utilizzando named pipe.

In ogni caso, si è scoperto che il problema era un interruttore difettoso.

Ho risolto i problemi con la risoluzione dei problemi di livello app e db prima di impostare un'attività pianificata su PING avanti e indietro tra i server delle applicazioni e i database (utilizzando sia l'indirizzo IP che il nome NETBIOS dei server, nel caso il problema fosse ricerca del nome Netbios).

Gli errori di ping si sono verificati in modo affidabile contemporaneamente agli errori di DB, quindi sapevamo che era l'hardware di rete e non qualcosa di più elevato.

Sostituzione dell'interruttore risolto tutto.

Problemi correlati