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:
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?
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
Ü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.
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
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
Tags und Links sql-server sql-server-2008 windows-server-2008-r2