तुरंत एक लंबी एसक्यूएल क्वेरी को कैसे मारें / रोकें?


93

मैं SQL सर्वर 2008 और इसके प्रबंधन स्टूडियो का उपयोग कर रहा हूं। मैंने एक क्वेरी निष्पादित की है जो कई पंक्तियों को जन्म देती है। मैंने इसे लाल रद्द बटन के माध्यम से रद्द करने की कोशिश की, लेकिन यह पिछले 10 मिनट से नहीं रुका है। यह आमतौर पर 3 मिनट के भीतर बंद हो जाता है।

क्या कारण हो सकता है और मैं इसे तुरंत कैसे रोकूं?


क्या आपने जाँच की है कि कोई भी एप्लिकेशन इस क्वेरी को पकड़ रहा है ??
user1102001

1
बंद करें और अपनी sql सेवाओं को फिर से शुरू करें ..
user1102001

मैंने इस सेनारियो का सामना किया है, यहां तक ​​कि मैं सबकुछ sql में चला रहा था और यह मेरी इच्छा है कि मैं अपने प्रोफाइल को संपादित करूं या नहीं ...
user1102001

@ user1102001 - आपको कुछ भी करने के लिए मजबूर नहीं किया। मैंने कहा कि नहीं और नहीं करना चाहिए :)
अगली कड़ी। लेनर

जवाबों:


66

क्या कारण हो सकता है

एक क्वेरी रद्द तत्काल है, बशर्ते कि आपका ध्यान सर्वर तक पहुंच सके और संसाधित किया जा सके। यदि आप SQLCLR से किसी वेब सेवा को कॉल करने जैसे कुछ कार्य करते हैं, तो एक क्वेरी को रद्द करने योग्य स्थिति में होना चाहिए, जो लगभग हमेशा सत्य होता है। यदि आपका ध्यान सर्वर तक नहीं पहुंच सकता है, तो आमतौर पर शेड्यूलर अधिभार के कारण होता है ।

लेकिन अगर आपकी क्वेरी एक लेन-देन का हिस्सा है जिसे रोलबैक करना होगा तो रोलबैक बाधित नहीं किया जा सकता है। अगर इसमें 10 मिनट का समय लगता है तो इसे 10 मिनट की जरूरत है और इसके बारे में आप कुछ नहीं कर सकते। यहां तक ​​कि सर्वर को पुनरारंभ करने से भी मदद नहीं मिलेगी, केवल स्टार्टअप को लंबा कर देगा क्योंकि पुनर्प्राप्ति को रोलबैक को समाप्त करना होगा।

आपके मामले में कौन सा विशिष्ट कारण लागू होता है, इसका उत्तर देने के लिए, आपको स्वयं की जांच करनी होगी।


ध्यान दें कि SSMS क्वेरी को 'रद्द' के रूप में दिखाता है (जैसा कि 'रद्द करने का प्रयास करने का विरोध किया जाता है') केवल ध्यान उत्तर प्राप्त होने के बाद, जो पहले संचार पाइप में सभी मध्यवर्ती परिणामों के निकास का तात्पर्य करता है (उदाहरण के लिए टीसीपी / आईपी में सभी परिणाम। भेजें / प्राप्त बफ़र्स और सभी-इन-मेमोरी बफ़र्स)।
रेमस रूसन

1
काश, यह 'रोलिंग बैक' कहेगा
साइमन_वेवर

@RemusRusanu - अनुमानित रोलबैक समय 20,000+ घंटे होने पर क्या होगा? एक बैकअप से बहाल करने के लिए खुश। dba.stackexchange.com/questions/222145/…
youcantryreachingme

108
sp_who2 'active'

CPUTime और DiskIO के तहत मान जांचें । तुलनात्मक रूप से बड़े मूल्य वाली प्रक्रिया के SPID पर ध्यान दें।

kill {SPID value}

मैं Microsoft SQL Server 2008 R2 का उपयोग कर रहा हूं, मैंने यह पता लगाने की कोशिश की कि जिस क्वेरी को निष्पादित किया जा रहा है उसका SPID क्या है और उसे निलंबित किया गया है, और पाया कि समान SPID वाले एक ही SELECT SQL के कई उदाहरण हैं। जब मैं कमांड KILL 114 को निष्पादित करने का प्रयास करता हूं - यहां 114 मेरी निलंबित क्वेरी का SPID मान है। मुझे नीचे त्रुटि शॉन मिलता है: कृपया मार्गदर्शन करें। एमएसजी 102, स्तर 15, राज्य 1, लाइन 2 '114' के पास गलत सिंटैक्स।
कोड बस्टर

40

पहले नीचे दिए गए कमांड को निष्पादित करें:

sp_who2

उसके बाद SPID के साथ नीचे दिए गए कमांड को निष्पादित करें, जो आपको उपरोक्त कमांड से मिला था:

KILL {SPID value}

22

यह एक मूर्खतापूर्ण जवाब की तरह है, लेकिन यह मेरे मामले में कम से कम मज़बूती से काम करता है: प्रबंधन स्टूडियो में, जब "रद्द करें क्वेरी" रद्द करें मैं उस क्वेरी को रोक नहीं सकता जो मैं वर्तमान sql दस्तावेज़ को बंद करने के लिए क्लिक करता हूं। यह मुझसे पूछता है कि क्या मैं क्वेरी को रद्द करना चाहता हूं, मैं कहता हूं हां, और लो और निहारना कुछ सेकंड में इसे निष्पादित करना बंद कर देता है। उसके बाद यह मुझसे पूछता है कि क्या मैं बंद करने से पहले दस्तावेज़ को सहेजना चाहता हूं। इस बिंदु पर मैं दस्तावेज़ को खुला रखने और काम जारी रखने के लिए रद्द करें पर क्लिक कर सकता हूं। पता नहीं कि पर्दे के पीछे क्या चल रहा है, लेकिन यह काम करने लगता है।


5
इस मामले में क्वेरी वास्तव में अभी भी चल रही है / पृष्ठभूमि में लटक सकती है, आप इसे अभी नहीं देखेंगे।
मेष ०५

1
मुझे लगता है कि यह कनेक्शन को मारता है, क्योंकि आपको इसके बाद फिर से कनेक्ट करना होगा।
एनाकिक

2
यह एसएसएमएस से कनेक्शन को मारता है, लेकिन (जरूरी नहीं) डीबी को।
मेष ०१

1
मैंने यह कोशिश की कि मेरा एसक्यूएल लटक गया। T_T
बॉट

1
यदि आप इसे नहीं देख सकते हैं, तो यह मौजूद नहीं है।
क्रिसड

13

यदि आप रद्द करते हैं और उस रन को देखते हैं

 sp_who2 'active'

(गतिविधि मॉनिटर पुराने sql सर्वर 2000 FYI पर उपलब्ध नहीं होगा)

आप जिस एसपीआईडी ​​को मारना चाहते हैं, उसे स्पॉट 81 पर रखें

Kill 81

sp_who2 'active' फिर से चलाएं और आप शायद नोटिस करेंगे कि यह सो रहा है ... वापस रोलिंग

STATUS को फिर से चलाने के लिए KILL

Kill 81 

फिर आपको इस तरह का एक मैसेज मिलेगा

 SPID 81: transaction rollback in progress. Estimated rollback completion: 63%. Estimated time remaining: 992 seconds.

11

क्वेरी निष्पादन को रोकने के लिए आप कीबोर्ड शॉर्टकट ALT+ Breakका उपयोग कर सकते हैं । हालाँकि, यह सभी मामलों में सफल नहीं हो सकता है।


1
यह एक मेरे लिए मैनेजमेंट स्टूडियो में काम करता है। धन्यवाद
Vishvanathsinh सोलंकी

3
--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

कृपया अपने उत्तर में कुछ स्पष्टीकरण जोड़कर इसे संपादित करें, ताकि अन्य इससे सीख सकें
निको हसे २

2

जाहिरा तौर पर एसक्यूएल सर्वर 2008 आर 2 64 बिट पर, आईआईएस से लंबे समय तक चलने वाली क्वेरी के साथ मार स्पिड काम नहीं करता है, क्वेरी बस फिर से शुरू होती है। और यह स्पाइड का पुन: उपयोग कर रहा है। क्वेरी SQL सर्वर को 35% सीपीयू की तरह लगातार लेने और वेबसाइट को लटकाने का कारण बन रही है। मैं बीसी का अनुमान लगा रहा हूं / यह लॉग इन करने के लिए अन्य प्रश्नों का जवाब नहीं दे सकता है


2
मुझे इसके लिए एक स्रोत देखना अच्छा लगेगा।
एंट स्विफ्ट

1

जब मैंने अंतहीन दौड़ लगाते हुए इसे बंद करने की कोशिश की तो मेरे हिस्से में मेरा एसक्यूएल लटक गया। इसलिए मैंने जो किया वह है मैं अपने कार्य प्रबंधक को खोलता हूं और अपनी sql क्वेरी को समाप्त करता हूं। इसने मेरे एसक्यूएल को रोक दिया और इसे फिर से शुरू किया।


1

एक सरल उत्तर, यदि लाल "स्टॉप" बॉक्स काम नहीं कर रहा है, तो कीबोर्ड पर "Ctrl + ब्रेक" बटन दबाने की कोशिश करना है।

यदि आप लिनक्स पर एसक्यूएल सर्वर चला रहे हैं, तो एक ऐप है जिसे आप "किलॉल" नाम से जोड़ सकते हैं, बस "किलॉल" बटन पर क्लिक करें और फिर उस प्रोग्राम पर क्लिक करें जो लूप में पकड़ा गया है और यह प्रोग्राम को समाप्त कर देगा। उम्मीद है की वो मदद करदे।


1

मैं लंबे समय से एक ही चीज से पीड़ित हूं। यह विशेष रूप से तब होता है जब आप दूरस्थ सर्वर से जुड़े होते हैं (जो धीमा हो सकता है), या आपके पास खराब नेटवर्क कनेक्शन है। मुझे संदेह है कि क्या Microsoft जानता है कि सही उत्तर क्या है।

लेकिन जब से मैंने समाधान खोजने की कोशिश की है। केवल 1 आम आदमी के दृष्टिकोण ने काम किया

  • क्वेरी के टैब पर क्लोज़ बटन पर क्लिक करें जिसे आप झेल रहे हैं। थोड़ी देर के बाद (यदि Microsoft आप पर कठोर नहीं है !!!) आपको यह पूछने वाली एक खिड़की मिल सकती है

"क्वेरी अभी निष्पादित हो रही है। क्या आप क्वेरी रद्द करना चाहते हैं?"

  • "हां" पर क्लिक करें

  • थोड़ी देर के बाद यह पूछेगा कि आप इस क्वेरी को बचाना चाहते हैं या नहीं?

  • "रद्द करें" पर क्लिक करें

और पोस्ट करें, हो सकता है कि आप अपनी क्वेरी को निष्पादित करने के लिए स्टूडियो फिर से स्थिर हों।

यह पृष्ठभूमि में क्या करता है कनेक्शन के साथ आपकी क्वेरी विंडो को डिस्कनेक्ट कर रहा है। इसलिए क्वेरी को फिर से चलाने के लिए, रिमोट सर्वर को फिर से कनेक्ट करने में समय लगेगा। लेकिन मेरा विश्वास करो कि यह व्यापार उस टाइमर को देखने की पीड़ा से कहीं बेहतर है जो अनंत काल तक चलता है।

पुनश्च: यह मेरे लिए काम करता है, यश आपके लिए भी काम करता है। !!!


1
फिर भी मेरे लिए काम किया और मेरी समस्या को हल किया ->
ErocM
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.