Fehler 17886 - Der Server wird die Verbindung trennen

9

Wir betreiben eine Website auf einem vps-Server mit SQL Server 2008 x64 r2. Wir werden mit 17886 Fehlern bombardiert - nämlich:

  

Der Server wird die Verbindung trennen, weil der Client-Treiber hat   hat mehrere Anfragen gesendet, während sich die Sitzung im Einzelbenutzermodus befindet. Dies   Fehler tritt auf, wenn ein Client eine Anforderung zum Zurücksetzen der Verbindung sendet   während in der Sitzung noch Batches ausgeführt werden oder wenn   Der Client sendet eine Anforderung, während die Sitzung eine Verbindung zurücksetzt.   Bitte kontaktieren Sie den Client-Treiber-Anbieter.

Dies führt dazu, dass SQL-Anweisungen fehlerhafte Ergebnisse zurückgeben. Ich habe so ziemlich alle Vorschläge ausprobiert, die ich im Internet gefunden habe, einschließlich:

  • mit mars und ohne.
  • mit Pooling und ohne
  • mit async = true und ohne

wir haben nur eine Datenbank und es ist absolut Multi-User.

Alles wurde kürzlich installiert, damit es auf dem neuesten Stand ist. Sie können mit high cpu korreliert werden (allerdings nicht ausschließlich nach den Monitoren, die ich gesehen habe). Auch korreliert mit high request rates von Suchmaschinen. Hohe CPU / Anforderungen sollten jedoch nicht dazu führen, dass SQL-Verbindungen zurückgesetzt werden - im schlimmsten Fall sollten wir hohe Antwortzeiten haben oder die Antwort ablehnen.

Irgendwelche Vorschläge? Ich bin nur ein Entwickler nicht dba - brauche ich eine dba, um dieses Problem zu lösen?

    
nomadsolo 10.01.2013, 08:11
quelle

3 Antworten

1

Nicht sicher, aber einige Ihrer Abfragen können Deadlocks auf dem Server verursachen.

An dem Punkt, an dem Sie diesen Fehler erneut feststellen

  • Öffnen Sie Management Studio (auf dem Server installieren Sie es falls nötig)

  • Öffnen Sie ein neues Abfragefenster

  • Führen Sie sp_who2

  • aus
  • Überprüfen Sie die blkby Spalte, die für Blockiert von steht. Wenn es Daten in dieser Spalte gibt, haben Sie ein Deadlock Problem (Normalerweise sollte es wie der Screenshot sein, den ich angehängt habe, komplett leer).

Wenn Sie einen Deadlock haben, können wir mit den nächsten Schritten fortfahren. Aber überprüfe das jetzt.

    
erichste 10.01.2013 08:35
quelle
0

Um den obigen Fehler zu beheben, muss "MultipleActiveResultSets = True" zur Verbindungszeichenfolge hinzugefügt werden.

über Ereignis-ID 17886 MSSQLServer - Der Server wird die Verbindung trennen

    
Sundeep 07.04.2015 15:56
quelle
0

Ich würde eine Eventlog-Aufgabe erstellen, um Sie per E-Mail zu benachrichtigen, sobald 17886 geworfen wird. Gehen Sie dann sofort zur db und führen Sie sp_who2 aus, rufen Sie blkby spid ab und führen Sie einen dbcc-Eingabepuffer aus. Hoffentlich gibt dir die eveneinfo etwas, das noch greifbarer ist.

sp_who2

DBCC-INPUTBUFFER (62) GEHEN

    
David Rendall 08.07.2015 10:17
quelle