2013-01-10 7 views
8

Stiamo eseguendo un sito Web su un server vps con sql server 2008 x64 r2. Siamo bombardati da 17886 errori - vale a dire:Errore 17886 - Il server interromperà la connessione

Il server interrompere la connessione, perché il driver client ha inviato più richieste, mentre la sessione è in modalità utente singolo. Questo errore si verifica quando un client invia una richiesta per reimpostare la connessione mentre nella sessione sono ancora in esecuzione batch o quando il client invia una richiesta mentre la sessione sta reimpostando una connessione. Contattare il fornitore del driver client.

Ciò causa istruzioni SQL per restituire risultati corrotti. Ho provato praticamente tutti i suggerimenti che ho trovato in rete, tra cui:

  • con mars, e senza.
  • con messa in comune e senza
  • con async = true e senza

abbiamo solo una base di dati ed è assolutamente multi-utente.

Tutto è stato installato di recente, quindi è aggiornato. Possono essere correlati a high cpu (sebbene non esclusivamente in base ai monitor che ho visto). Correlato anche con high request rates dai motori di ricerca. Tuttavia, alte cpu/richieste non dovrebbero causare il reset delle connessioni SQL - nel peggiore dei casi dovremmo avere tempi di risposta elevati o si rifiuta di inviare una risposta.

Qualche suggerimento? Sono solo uno sviluppatore non dba - ho bisogno di un dba per risolvere questo problema?

risposta

1

Non sono sicuro, ma alcune delle vostre query potrebbero causare deadlock sul server.

Nel punto in cui si verifichi questo errore di nuovo

  • Aprire Management Studio (sul server, installarlo se necessario)

  • Aprire una nuova finestra di query

  • Run sp_who2

  • Verificare il blkby colonna che è l'abbreviazione di bloccata da. Se ci sono dei dati in quella colonna hai un problema di deadlock (normalmente dovrebbe essere come lo screenshot che ho allegato, completamente vuoto).

Se si dispone di un punto morto, possiamo continuare con i passaggi successivi. Ma per ora controlla per favore.

enter image description here

+0

la sua difficile da catturare il server in questo momento ci sono errori. devo prendere questi dati nello stesso momento dell'errore? Se è così, non sono sicuro quando arriverà la prossima finestra di opportunità. Ci sono giorni alla volta senza errori e poi tutte le improvvise centinaia di errori. C'è un'altra soluzione da provare nel frattempo? – nomadsolo

+0

Esaminare i file in questa directory: "C: \ Programmi \ Microsoft SQL Server \\ [YourSQLInstanceName] \ MSSQL \ Log" e controllare il registro eventi. Prova a trovare qualche informazione in più, e se pensi di aver trovato qualcosa di utile aggiungilo alla tua domanda – erichste

+0

Il messaggio che ho postato sopra ("Il server lascerà cadere la connessione ...") è l'errore che vedo nel log degli errori sql, lì sono centinaia di loro – nomadsolo

0

vorrei creare un compito registro eventi per e-mail ogni volta 17886 viene generata. Quindi vai immediatamente al db ed esegui lo sp_who2, ottieni il blkby spid ed esegui un dbcc inputbuffer. Speriamo che eventinfo ti dia qualcosa di più tangibile per andare avanti.

sp_who2

DBCC INPUTBUFFER (62) GO