2010-11-29 10 views
97

मैं web.config में कनेक्शन स्ट्रिंग को संशोधित करके टाइमआउट वृद्धि कर सकते हैं?कनेक्शन समयबाह्य

+2

जैसे मैं टाइमआउट सोच थी क्वेरी निष्पादन नियंत्रण होगा यह पढ़ नहीं है:

यहाँ कोड नमूना है "एक बेहतर नाम होगा। Http://stackoverflow.com/a/7976867/409856 – downwitch

उत्तर

183

हां, आप ;Connection Timeout=30 को अपने connection string पर जोड़ सकते हैं और अपनी इच्छित मान निर्दिष्ट कर सकते हैं।

Connection Timeout संपत्ति में निर्धारित टाइमआउट मान सेकंड में व्यक्त किया गया समय है। यदि यह प्रॉपर्टी सेट नहीं है, तो कनेक्शन के लिए टाइमआउट मान डिफ़ॉल्ट मान (15 सेकंड) है।

इसके अलावा, 0 को टाइमआउट मान सेट करते समय आप निर्दिष्ट करते हैं कि आपके प्रयास प्रतीक्षा करता है अनंत समय कनेक्ट करने के लिए।

0 का मान कोई सीमा को इंगित करता है, और एक ConnectionString में बचा जाना चाहिए प्रतीक्षा करता है अनिश्चित काल के लिए कनेक्ट करने के लिए एक प्रयास है क्योंकि: दस्तावेज़ में वर्णित के रूप में, यह कुछ है कि आप अपने कनेक्शन स्ट्रिंग में सेट नहीं करना चाहिए।

+4

यह टाइमआउट मिनट या सेकंड में है? – user1

+1

@ उपयोगकर्ता 1 "प्रयास को समाप्त करने और त्रुटि उत्पन्न करने से पहले सर्वर से कनेक्शन के लिए प्रतीक्षा करने के लिए समय (सेकंड में) की लंबाई।" – Santux

+5

एफवाईआई: कनेक्शन टाइमआउट = 0 अनंत है। –

29

हममम ...

रूप डैरिन कहा, तुम एक उच्च कनेक्शन टाइमआउट मान निर्दिष्ट कर सकते हैं, लेकिन मुझे शक है कि वास्तव में मुद्दा है।

जब आप कनेक्शन समय समाप्ति मिलता है, यह आम तौर पर निम्न में से एक के साथ एक समस्या है:

  1. नेटवर्क विन्यास - अपने वेब सर्वर/dev बॉक्स और एसक्यूएल सर्वर के बीच धीमे कनेक्शन। टाइमआउट बढ़ाने से यह सही हो सकता है, लेकिन अंतर्निहित समस्या की जांच करना बुद्धिमान होगा।

  2. कनेक्शन स्ट्रिंग। मैंने उन मुद्दों को देखा है जहां किसी गलत कारण से गलत उपयोगकर्ता नाम/पासवर्ड होगा, "वास्तविक पहुंच" का संकेत देने वाली वास्तविक त्रुटि के बजाय टाइमआउट त्रुटि दें। ऐसा नहीं होना चाहिए, लेकिन ऐसा जीवन है।

  3. कनेक्शन स्ट्रिंग 2: आप गलत तरीके से सर्वर का नाम निर्दिष्ट कर रहे हैं, या अधूरे हैं (उदाहरण के लिए, mysqlservermysqlserver.webdomain.com के बजाय), आप एक समय समाप्ति मिलेगा। आप सर्वर सर्वर नाम कमांड लाइन से कनेक्शन स्ट्रिंग में निर्दिष्ट बिल्कुल के रूप में उपयोग करते हुए पिंग कर सकते हैं?

  4. कनेक्शन स्ट्रिंग 3: यदि सर्वर का नाम आपके DNS (या मेजबान फ़ाइल) में है, लेकिन गलत या पहुंचने योग्य आईपी की ओर इशारा करते हुए, आपको मशीन-नहीं-मिली-आईएसएच त्रुटि के बजाय टाइमआउट मिलेगा ।

  5. क्वेरी आप कॉल कर रहे बाहर समय है। ऐसा लगता है कि सर्वर से कनेक्शन समस्या है, लेकिन, इस पर निर्भर करता है कि आपका ऐप कैसे संरचित किया गया है, आप इसे मंच पर सभी तरह से बना सकते हैं जहां आपकी क्वेरी टाइमआउट होने से पहले निष्पादित हो रही है।

  6. कनेक्शन लीक। कितनी प्रक्रियाएं चल रही हैं? कितने खुले कनेक्शन? मुझे यकीन नहीं है कि कच्चे ADO.NET कनेक्शन पूलिंग करता है, जब आवश्यक एला एंटरप्राइज़ लाइब्रेरी, या जहां कॉन्फ़िगर किया गया हो, स्वचालित रूप से कनेक्शन बंद कर देता है। यह शायद एक लाल हेरिंग है। डब्ल्यूसीएफ और वेब सेवाओं के साथ काम करते समय, मुझे अनजान कनेक्शन के साथ समस्याएं हुईं, जिससे टाइमआउट और अन्य अप्रत्याशित व्यवहार हुए।

इन्हें आज़माएं:

  1. आप एक समय समाप्ति मिलता है जब एसक्यूएल प्रबंधन स्टूडियो के साथ सर्वर से कनेक्ट? यदि ऐसा है, तो नेटवर्क कॉन्फ़िगरेशन समस्या की संभावना है। यदि आपको प्रबंधन स्टूडियो से कनेक्ट करते समय कोई समस्या नहीं दिखाई देती है, तो समस्या आपके ऐप में होगी, सर्वर के साथ नहीं।

  2. एसक्यूएल प्रोफाइलर चलाएं, और देखें कि वास्तव में तार में क्या चल रहा है। आपको यह बताने में सक्षम होना चाहिए कि क्या आप वास्तव में कनेक्ट कर रहे हैं, या यदि कोई समस्या समस्या है।

  3. प्रबंधन स्टूडियो में अपनी क्वेरी चलाएं, और देखें कि यह कितना समय लगता है।

शुभकामनाएँ!

+0

यदि आपकी क्वेरी समय समाप्त हो रही है तो मुझे लगता है कि आपको कमांडटाइम – user55474

+0

@ user55474 शायद मिलेगा; निर्भर करता है (** बहुत ** शायद ही कभी) इसे कैसे कहा जा रहा है। –

+0

इस एमएसडीएन ब्लॉग पोस्ट के मुताबिक नहीं: http://blogs.msdn.com/b/spike/archive/2008/07/31/timeout-expired-the-timeout-period-elapsed-prior-to-completion-of -अ-ऑपरेशन-या-द-सर्वर-is-not-respond.aspx –

10

यदि आप इसे गतिशील रूप से बदलना चाहते हैं, तो मैं SqlConnectionStringBuilder का उपयोग करना पसंद करता हूं।

यह आपको क्लास ऑब्जेक्ट में कनेक्शन स्ट्रिंग i.e. को स्ट्रिंग करने की अनुमति देता है, सभी कनेक्शन स्ट्रिंग गुण इसके सदस्य बन जाएंगे।

इस मामले में वास्तविक लाभ यह होगा कि आपको इस बारे में चिंता करने की ज़रूरत नहीं है कि कनेक्शन कनेक्शन में कनेक्शनटाइम स्ट्रिंग भाग पहले से मौजूद है या नहीं?

साथ ही यह ऑब्जेक्ट बनाता है और स्ट्रिंग में हेरफेर करने के बजाए ऑब्जेक्ट में मान असाइन करना हमेशा अच्छा होता है। यह केवल समय समाप्ति सर्वर से कनेक्ट करने नहीं करता है - - "जोड़ने टाइमआउट

var sscsb = new SqlConnectionStringBuilder(_dbFactory.Database.ConnectionString); 

sscsb.ConnectTimeout = 30; 

var conn = new SqlConnection(sscsb.ConnectionString); 
+2

मुझे विश्वास नहीं है कि 'कनेक्शन कनेक्शन' प्रकार को 'SqlConnection' प्रकार पर पढ़ने के लिए केवल एक अच्छा विचार माना जाता था। – Maslow

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