2012-01-23 9 views
36

मुझे अपने पृष्ठों में से एक पर एक त्रुटि प्राप्त हो रही है कि linq क्वेरी का समय समाप्त हो गया है क्योंकि इसमें बहुत अधिक समय लग रहा है। यह पृष्ठ को अनुपयोगी बनाता है।लिंक-टू-एसक्यूएल टाइमआउट

यह एक रिपोर्ट पेज है जिसे केवल दिन में एक बार प्रशासकों द्वारा उपयोग किया जाता है। इस क्वेरी को कम करने के लिए यह अपरिहार्य है, इसे केवल बहुत सारे डेटा को सॉर्ट करना होगा।

मैंने इसे ठीक करने के लिए समाधान डेटा संदर्भ में टाइमआउट संपत्ति को बढ़ाकर पढ़ा है, लेकिन मैं ऐसा करने से बचना चाहता हूं क्योंकि यह पूरी वेबसाइट के लिए इसे बदल देगा।

क्या व्यक्तिगत पृष्ठों के लिए बड़ा समय निर्धारित करने का कोई तरीका है?

उत्तर

55

बस जवाब IntelliSense के साथ खेल पाया:

using (MainContext db = new MainContext()) 
{ 
    db.CommandTimeout = 3 * 60; // 3 Mins 
} 

इस तरह आप के रूप में संबंध तार या डेटा संदर्भों को संशोधित करने वाले एक प्रति क्वेरी के आधार पर एक प्रश्न के लिए बाहर के समय में वृद्धि कर सकते हैं।

+3

यदि आप टाइमआउट अनिश्चितकालीन सेट को शून्य पर सेट करना चाहते हैं। – vcRobe

4

टॉम गुलेन का जवाब एक अच्छा है।

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

+0

स्पष्टीकरण – Oxymoron

-1

एसक्यूएल टाइमआउट बढ़ाने से पहले यह हमेशा आपकी अनुक्रमणिका रणनीति का मूल्यांकन करने लायक है। यह मेरे अनुभव में दुर्लभ है, कि एक अच्छी तरह से अनुक्रमित तालिका और कॉलम के खिलाफ एक प्रश्न टाइमआउट होगा। मैं पर DbContext

Ecom.Database.CommandTimeout = 120;

आशा डाटाबेस ड्रिल-डाउन करने के लिए किया था

देस ओवेन

+1

हाय के लिए उपरोक्त, एसओ में आपका स्वागत है। भले ही यह बहुत रचनात्मक है, यह बिल्कुल एक जवाब नहीं है और एक टिप्पणी होना चाहिए। पर्याप्त प्रतिष्ठा अर्जित करने के बाद आप टिप्पणी कर सकते हैं। चीयर्स! – Cthulhu

10

@Tom Gullens जवाब EF6

पर मेरे लिए काम नहीं किया यह आप कुछ समय की बचत होती है ।

+5

linq-to-sql! = ईएफ – djv

संबंधित मुद्दे