मुझे वास्तव में परेशानी हो रही है कि हम जो कुछ अनुभव कर रहे हैं, उसे रोककर ट्रैक करें।
SPID की स्थिति को रोकने वाली जड़ 'स्लीपिंग' है, cmd 'AWAITING COMMAND' है, और sqltext
है SET TRANSACTION ISOLATION LEVEL READ COMMITTED
।
जब मैं अवरुद्ध लेनदेन गणना रिपोर्ट द्वारा शीर्ष लेनदेन को देखता हूं, तो ब्लॉकिंग SQL स्टेटमेंट '-' है।
मैंने SQL पर एक ट्रेस किया है और जब ब्लॉकिंग रूट ब्लॉकिंग SPID ट्रेसिंग होता है, लेकिन यह वास्तव में मुझे कहीं भी नहीं ले गया है। अंतिम ट्रेस स्टेटमेंट sqltext
उपरोक्त के समान है SET TRANSACTION ISOLATION LEVEL READ COMMITTED
।
मैंने सभी संबंधित संग्रहीत कार्यविधियाँ जाँच ली हैं जिन्हें मैं यह सुनिश्चित करने के लिए पा सकता हूँ कि उनके पास TRY / CATCH BEGIN TRAN / COMMIT TRAN / ROLLBACK TRAN स्टेटमेंट हैं (हम हर चीज के लिए संग्रहीत कार्यविधियों का उपयोग करते हैं ताकि कोई स्टैंडअलोन स्टेटमेंट न चले)। यह मुद्दा अभी पिछले 24 घंटों से अधिक हो रहा है और कोई भी सिस्टम में कोई बदलाव करने का दावा नहीं कर रहा है।
समाधान: हमारी शायद ही कभी इस्तेमाल की गई संग्रहीत प्रक्रियाओं में से एक सम्मिलित करने के साथ एक त्रुटि थी (स्तंभों की संख्या मेल नहीं खाती), लेकिन हम अभी भी उलझन में हैं कि वास्तव में क्या हो रहा था।
जब सभी ट्रेस जानकारी को देखते हैं, तो इस संग्रहीत कार्यविधि के लिए EXEC कथन कई बार सूचीबद्ध किया गया था, लेकिन ब्लॉक SPID पर ब्लॉक होने से ठीक पहले कभी नहीं। ऐसा लगता था कि जब यह अवरुद्ध करना शुरू कर रहा था, तो ट्रेस ने इसे निष्पादित नहीं किया था (या इसके भीतर कोई भी कथन)। हालांकि, अन्य बार भी ट्रेस रिकॉर्ड किया गया था कि यह निष्पादन है और कोई अवरुद्ध नहीं हुआ।
संग्रहीत कार्यविधि त्रुटि रिपोर्ट एक उपयोगकर्ता से आई थी, और मैं एसएससीएमएस में कई EXEC बयानों को खोजने और उन्हें चलाने में सक्षम था। कोई समय नहीं जब मैंने उन्हें दौड़ाया था, क्या हमारे पास कोई अवरोधक था या क्या वे लटकाए थे। वे उम्मीद के मुताबिक भागे (कैच ब्लॉक ने निकाल दिया और त्रुटि के बाद लेन-देन वापस कर दिया)। संग्रहीत कार्यविधि को हल करने के बाद, हमने समस्या को फिर से नहीं देखा है।