मैंने वह प्रक्रिया संग्रहीत कर ली है, जो हर बार वेब एप्लिकेशन से कॉल किए जाने के समय को अलग करती है।
मैंने Sql Profiler को निकाल दिया और उस समय कॉल का पता लगाया और अंत में इन बातों का पता लगाया:
- जब MS SQL प्रबंधन स्टूडियो में दिए गए कथनों को उसी तर्कों के साथ निष्पादित किया जाता है (वास्तव में, मैंने sql प्रोफ़ाइल ट्रेस से प्रक्रिया कॉल की प्रतिलिपि बनाई और इसे चलाया): यह 5 ~ 6 सेकंड के औसत में समाप्त होता है।
- लेकिन जब वेब एप्लिकेशन से कॉल किया जाता है, तो यह 30 सेकंड से अधिक (ट्रेस में) होता है, इसलिए मेरा वेबपेज वास्तव में तब तक बाहर हो जाता है।
इस तथ्य के अलावा कि मेरे वेब एप्लिकेशन का अपना उपयोगकर्ता है, हर चीज समान है (एक ही डेटाबेस, कनेक्शन, सर्वर आदि) मैंने वेब अनुप्रयोग के उपयोगकर्ता के साथ स्टूडियो में सीधे क्वेरी चलाने की कोशिश की और इसमें 6 से अधिक नहीं लगते हैं सेकंड।
मुझे कैसे पता चलेगा कि क्या हो रहा है?
मैं यह मान रहा हूं कि इसका इस तथ्य से कोई लेना-देना नहीं है कि हम BLL> DAL लेयर या टेबल एडेप्टर का उपयोग करते हैं क्योंकि ट्रेस स्पष्ट रूप से दिखाता है कि विलंब वास्तविक प्रक्रिया में है। यही सब मैं सोच सकता हूं।
EDIT मुझे इस लिंक में पता चला कि ADO.NET ARITHABORT
सच में सेट होता है - जो कि ज्यादातर समय के लिए अच्छा होता है, लेकिन कभी-कभी ऐसा होता है, और सुझाए गए काम-के आसपास with recompile
संग्रहित खरीद में विकल्प जोड़ना है। मेरे मामले में, यह काम नहीं कर रहा है, लेकिन मुझे संदेह है कि यह कुछ ऐसा ही है। किसी को भी पता है कि ADO.NET क्या करता है या मुझे कल्पना कहां मिल सकती है?