Używam SQL Server 2008 i jego studia zarządzania. Wykonałem zapytanie, które daje wiele wierszy. Próbowałem go anulować za pomocą czerwonego przycisku anulowania, ale nie zatrzymał się przez ostatnie 10 minut. Zwykle zatrzymuje się w ciągu 3 minut.
Jaki może być powód i jak natychmiast to zatrzymać?
sql
sql-server
sql-server-2008
sequel.learner
źródło
źródło
Odpowiedzi:
Anulowanie zapytania jest natychmiastowe, pod warunkiem, że Twoja uwaga może dotrzeć do serwera i zostać przetworzona. Zapytanie musi być w stanie możliwym do anulowania, co prawie zawsze jest prawdziwe, chyba że wykonujesz określone operacje, takie jak wywołanie usługi WWW z SQLCLR. Jeśli Twoja uwaga nie może dotrzeć do serwera, zwykle jest to spowodowane przeciążeniem programu planującego .
Ale jeśli zapytanie jest częścią transakcji, która musi zostać wycofana, wycofanie nie może zostać przerwane. Jeśli zajmuje to 10 minut, potrzebuje 10 minut i nic nie możesz na to poradzić. Nawet ponowne uruchomienie serwera nie pomoże, a jedynie wydłuży uruchamianie, ponieważ odzyskiwanie musi zakończyć wycofywanie.
Aby odpowiedzieć, który konkretny powód dotyczy Twojej sprawy, musisz sam zbadać sprawę.
źródło
Sprawdź wartości w CPUTime i DiskIO . Zwróć uwagę na identyfikator SPID procesu o dużej wartości.
kill {SPID value}
źródło
Najpierw wykonaj poniższe polecenie:
Następnie wykonaj poniższe polecenie z SPID, które otrzymałeś z powyższego polecenia:
KILL {SPID value}
źródło
To trochę głupia odpowiedź, ale działa niezawodnie przynajmniej w moim przypadku: w studiu zarządzania, gdy „Anuluj wykonywanie zapytania” nie zatrzymuje zapytania, po prostu klikam, aby zamknąć bieżący dokument sql. pyta mnie, czy chcę anulować zapytanie, odpowiadam, że tak, i oto po kilku sekundach przestaje się wykonywać. Następnie pyta mnie, czy chcę zapisać dokument przed zamknięciem. W tym momencie mogę kliknąć Anuluj, aby dokument był otwarty i kontynuował pracę. Nie mam pojęcia, co się dzieje za kulisami, ale wydaje się, że działa.
źródło
Jeśli anulujesz i zobaczysz ten bieg
(Monitor aktywności nie będzie dostępny na starym serwerze sql 2000 FYI)
Znajdź SPID, którego chcesz zabić, np. 81
Kill 81
Uruchom
sp_who2 'active'
ponownie, a prawdopodobnie zauważysz, że śpi ... cofa sięAby uzyskać STATUS, uruchom ponownie KILL
Kill 81
Wtedy otrzymasz taką wiadomość
SPID 81: transaction rollback in progress. Estimated rollback completion: 63%. Estimated time remaining: 992 seconds.
źródło
KILL {spid} WITH STATUSONLY
aby zobaczyć komunikat o stanie.Możesz użyć skrótu klawiaturowego ALT+, Breakaby zatrzymać wykonywanie zapytania. Jednak może się to nie udać we wszystkich przypadkach.
źródło
--Find Session Id for respective all running queries SELECT text, getdate(),* FROM sys.dm_exec_requests CROSS APPLY sys.dm_exec_sql_text(sql_handle) ---Kill specific session kill 125
źródło
najwyraźniej na 64-bitowym serwerze sql 2008 R2, z długo działającym zapytaniem z IIS, kill spid nie wydaje się działać, zapytanie jest po prostu ponownie i ponownie uruchamiane. i wydaje się, że ponownie wykorzystuje pająka. zapytanie powoduje, że serwer sql stale zajmuje około 35% procesora i zawiesza witrynę. Zgaduję, że bc / nie może odpowiadać na inne zapytania dotyczące logowania
źródło
Z mojej strony mój sql zawiesił się, gdy próbowałem go zamknąć podczas niekończącego się biegu. Więc co zrobiłem, to otworzyłem mojego menedżera zadań i zakończyłem zadanie moje zapytanie sql. To zatrzyma mój sql i uruchomi go ponownie.
źródło
Prostą odpowiedzią, jeśli nie działa czerwone pole „stop”, jest naciśnięcie przycisków „Ctrl + Break” na klawiaturze.
Jeśli używasz SQL Server w systemie Linux, istnieje aplikacja, którą możesz dodać do swojego zasobnika systemowego o nazwie „killall”. Wystarczy kliknąć przycisk „killall”, a następnie kliknąć program, który został zatrzymany w pętli, a program zakończy działanie. Mam nadzieję, że to pomoże.
źródło
Cierpię na to samo od dawna. Dzieje się tak szczególnie, gdy masz połączenie ze zdalnym serwerem (co może być powolne) lub masz słabe połączenie sieciowe. Wątpię, czy Microsoft wie, jaka jest właściwa odpowiedź.
Ale odkąd próbowałem znaleźć rozwiązanie. Tylko 1 podejście laika zadziałało
„Zapytanie jest obecnie wykonywane. Czy chcesz anulować zapytanie?”
Kliknij „Tak”
Po chwili zapyta, czy chcesz zapisać to zapytanie, czy nie?
Kliknij „Anuluj”
I opublikuj to, być może Twoje studio jest znowu stabilne, aby wykonać zapytanie.
W tle rozłącza okno zapytania z połączeniem. Zatem ponowne uruchomienie zapytania zajmie trochę czasu na ponowne połączenie się ze zdalnym serwerem. Ale uwierz mi, ten kompromis jest o wiele lepszy niż cierpienie oglądania tego timera, który działa wiecznie.
PS: To działa dla mnie, Kudos, jeśli działa również dla ciebie. !!!
źródło