Ich verwende SQL Server 2008 und sein Management Studio. Ich habe eine Abfrage ausgeführt, die viele Zeilen ergibt. Ich habe versucht, es über die rote Abbrechen-Taste abzubrechen, aber es hat in den letzten 10 Minuten nicht angehalten. Es hört normalerweise innerhalb von 3 Minuten auf.
Was könnte der Grund sein und wie kann ich es sofort stoppen?
sql
sql-server
sql-server-2008
sequel.learner
quelle
quelle
Antworten:
Ein Abbruch der Abfrage erfolgt sofort, sofern Ihre Aufmerksamkeit den Server erreichen und verarbeitet werden kann. Eine Abfrage muss sich in einem abbrechbaren Zustand befinden, was fast immer der Fall ist, es sei denn, Sie führen bestimmte Vorgänge aus, z. B. das Aufrufen eines Webdienstes von SQLCLR. Wenn Ihre Aufmerksamkeit den Server nicht erreichen kann, liegt dies normalerweise an einer Überlastung des Schedulers .
Wenn Ihre Abfrage jedoch Teil einer Transaktion ist, für die ein Rollback erforderlich ist, kann der Rollback nicht unterbrochen werden. Wenn es 10 Minuten dauert, braucht es 10 Minuten und Sie können nichts dagegen tun. Selbst ein Neustart des Servers hilft nicht, sondern verlängert den Start nur, da die Wiederherstellung den Rollback beenden muss.
Um zu beantworten, welcher spezifische Grund für Ihren Fall gilt, müssen Sie sich selbst untersuchen.
quelle
Überprüfen Sie die Werte unter CPUTime und DiskIO . Beachten Sie die SPID des Prozesses mit vergleichsweise großem Wert.
quelle
Führen Sie zuerst den folgenden Befehl aus:
Führen Sie danach den folgenden Befehl mit SPID aus, den Sie vom obigen Befehl erhalten haben:
quelle
Dies ist eine dumme Antwort, funktioniert aber zumindest in meinem Fall zuverlässig: Wenn in Management Studio die Abfrage "Ausführende Abfrage abbrechen" die Abfrage nicht stoppt, klicke ich einfach, um das aktuelle SQL-Dokument zu schließen. es fragt mich, ob ich die Abfrage abbrechen möchte, ich sage ja, und siehe da, in ein paar Sekunden hört es auf, ausgeführt zu werden. Danach werde ich gefragt, ob ich das Dokument vor dem Schließen speichern möchte. An dieser Stelle kann ich auf Abbrechen klicken, um das Dokument geöffnet zu halten und weiterzuarbeiten. Keine Ahnung, was sich hinter den Kulissen abspielt, aber es scheint zu funktionieren.
quelle
Wenn Sie abbrechen und sehen, dass ausgeführt
(Activity Monitor ist auf dem alten SQL Server 2000 nicht verfügbar.)
Finde die SPID, die du töten möchtest, zB 81
Führen Sie das
sp_who2 'active'
erneut aus und Sie werden wahrscheinlich feststellen, dass es schläft ... zurückrollenUm den STATUS erneut auszuführen, führen Sie den KILL aus
Dann erhalten Sie eine solche Nachricht
quelle
Sie können eine Tastenkombination ALT+ verwenden Break, um die Ausführung der Abfrage zu stoppen. Dies ist jedoch möglicherweise nicht in allen Fällen erfolgreich.
quelle
quelle
anscheinend auf SQL Server 2008 R2 64bit, mit lang laufender Abfrage von IIS scheint die Kill-Spid nicht zu funktionieren, die Abfrage wird nur immer wieder neu gestartet. und es scheint, die Spids wiederzuverwenden. Die Abfrage führt dazu, dass SQL Server ständig 35% CPU verbraucht und die Website aufhängt. Ich vermute, bc / es kann nicht auf andere Anfragen zum Anmelden antworten
quelle
In meinem Teil legte mein SQL auf, als ich versuchte, es zu schließen, während ich endlos lief. Also öffne ich meinen Task-Manager und beende die Aufgabe meiner SQL-Abfrage. Dies stoppte meine SQL und startete es neu.
quelle
Eine einfache Antwort, wenn das rote Feld "Stopp" nicht funktioniert, besteht darin, die Tasten "Strg + Pause" auf der Tastatur zu drücken.
Wenn Sie SQL Server unter Linux ausführen, können Sie Ihrem System eine App namens "killall" hinzufügen. Klicken Sie einfach auf die Schaltfläche "killall" und dann auf das Programm, das sich in einer Schleife befindet, und das Programm wird beendet. Hoffentlich hilft das.
quelle
Ich habe seit langer Zeit unter der gleichen Sache gelitten. Dies ist besonders dann der Fall, wenn Sie mit einem Remote-Server verbunden sind (was möglicherweise langsam ist) oder wenn Sie eine schlechte Netzwerkverbindung haben. Ich bezweifle, dass Microsoft weiß, was die richtige Antwort ist.
Aber da habe ich versucht, die Lösung zu finden. Nur 1 Laienansatz funktionierte
"Die Abfrage wird gerade ausgeführt. Möchten Sie die Abfrage abbrechen?"
Klicken Sie auf "Ja"
Nach einer Weile werden Sie gefragt, ob Sie diese Abfrage speichern möchten oder nicht.
Klicken Sie auf "Abbrechen"
Und poste das, vielleicht ist dein Studio wieder stabil, um deine Abfrage auszuführen.
Im Hintergrund wird das Abfragefenster von der Verbindung getrennt. Um die Abfrage erneut auszuführen, dauert es einige Zeit, bis der Remote-Server erneut verbunden ist. Aber glauben Sie mir, dieser Kompromiss ist weitaus besser als das Leiden, diesen Timer zu sehen, der für die Ewigkeit läuft.
PS: Das funktioniert bei mir, Kudos, wenn es auch bei Ihnen funktioniert. !!!
quelle