2013-02-12 15 views
5

मैं अपने SQL सर्वर से डेटाबेस कनेक्शन बनाना चाहता हूं तेज़ी से विफल रहता हूं। मैं टाइमआउट कैसे कम कर सकता हूं? मैंने अपनी कनेक्शन स्ट्रिंग में Connection Timeout=1 जोड़ने का प्रयास किया है, हालांकि यह कोई फर्क नहीं पड़ता है।मैं इकाई फ्रेमवर्क के साथ कनेक्ट टाइमआउट कैसे कम करूं?

Connection Timeout=500 के साथ, इसमें टाइमआउट के लिए लगभग 8 मिनट 30 सेकंड लगते हैं। यह उम्मीद है। Connection Timeout=1 के साथ, टाइमआउट में लगभग 40 सेकंड लगते हैं जो अपेक्षा से अधिक लंबा है।

मुझे EntityConnection.ConnectionTimeout संपत्ति मिली लेकिन यह केवल पढ़ने के लिए है। क्या इस टाइमआउट को कम करने के लिए मैं कुछ और कर सकता हूं? क्या यह संस्था के साथ एक मुद्दा है?

अद्यतन: यहां मेरी कनेक्ट स्ट्रिंग है। यह अभी भी टाइमआउट के लिए ~ 40 सेकंड लेता है।

<add name="KofaxAdminToolsEntities" connectionString="metadata=res://*/DB.Model.KofaxAdminTools.csdl|res://*/DB.Model.KofaxAdminTools.ssdl|res://*/DB.Model.KofaxAdminTools.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=MY_DATASOURCE;initial catalog=MY_CATALOG;persist security info=True;user id=MY_USER;password=MY_PASSWORD;MultipleActiveResultSets=True;App=EntityFramework;Connection Timeout=1&quot;" providerName="System.Data.EntityClient" /> 

अद्यतन 2: तो मुझे पता चला कि टाइमआउट एक TCP समयबाह्य, नहीं एक एसक्यूएल टाइमआउट कनेक्ट किया गया था। अगर मेरी मशीन मेजबान तक पहुंचने में सक्षम थी, तो @marc_s समाधान काम करता, हालांकि, क्योंकि मैं उस होस्ट तक नहीं पहुंच सकता, टीसीपी टाइमआउट खेल में आता है। क्या किसी को पता है कि SqlConnection के लिए टीसीपी टाइमआउट कैसे कम करें?

+0

आप इसे कनेक्शनस्ट्रिंग –

+0

में निर्दिष्ट कर सकते हैं क्या आप अपनी कनेक्शन स्ट्रिंग पोस्ट कर सकते हैं? – IronMan84

+0

आपका अपडेट 2 सही है। मेरे स्थानीय देव पर मेरे पास एक उपनाम परिभाषित है (टीसीपी का उपयोग करके)। कनेक्शन स्ट्रिंग टाइमआउट काम करता है लेकिन जब भी आप उपनाम का उपयोग कर सर्वर दबाते हैं तो कनेक्शन स्ट्रिंग में जो कुछ भी सेट होता है उससे अधिक समय लगता है। यदि मैं डेटा स्रोत नाम को वास्तविक नाम (उपनाम नहीं) में बदलता हूं तो कनेक्शन टाइमआउट = 1 अपेक्षा के अनुसार काम करता है। धन्यवाद। –

उत्तर

0

अपने DbContext वर्ग के निर्माता में निम्नलिखित कोड डालें:

((IObjectContextAdapter)this).ObjectContext.CommandTimeout = 1; 
+4

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

+0

वेब.कॉन्फिग सेटिंग के बारे में कैसे है? ऐसा कुछ जिसे पूर्ण पुन: संकलित और प्रकाशित किए बिना बदला जा सकता है। – Triynko

1

कहाँ और आप उस कनेक्शन समयबाह्य कैसे निर्दिष्ट किया?

मैं बस की कोशिश की और मेरी एफई कनेक्शन स्ट्रिंग को यह जोड़ा (का उपयोग कर एफई डेटाबेस पहले) - और जैसा कि उम्मीद की यह काम करता है: के साथ SQL सर्वर सेवा बंद कर दिया, कनेक्शन समय बाहर लगभग तुरंत प्रयास करता है ....

<add name="myEntities" 
    connectionString="metadata=res://*/People.csdl|res://*/People.ssdl|res://*/People.msl;provider=System.Data.SqlClient; 
      provider connection string=&quot;data source=.;initial catalog=mydb; 
      integrated security=True;connect timeout=1;multipleactiveresultsets=True; 
             ***************** 
      App=EntityFramework&quot;" 
    providerName="System.Data.EntityClient" /> 

(एफई कनेक्शन स्ट्रिंग टूट और स्पष्टता के लिए लिपटे - इस में सिर्फ एक लंबी लाइन हो जाएगा अपने web.config)

आप connect timeout=x जोड़ने की जरूरत है (जहां x सेकंड में है, किसी भी मूल्य से बड़े 0 ठीक है) अंदरprovider connection string= आपके ईएफ कनेक्शन स्ट्रिंग का मान।

+0

'multactiveresultsets 'प्रविष्टि क्या करती है? साथ ही, आप इस app.config से किस प्रकार का डेटाबेस कनेक्ट कर रहे हैं? – bsara

+0

@ ब्रैंडन: यह SQL सर्वर (2005 या नए) के लिए है। 'Multactiveresultsets' वैकल्पिक है - यह एक ही समय में कई 'SqlDataReader' कनेक्शन की अनुमति देता है –

+0

मैं इस प्रश्न पर ब्लेन के साथ काम कर रहा हूं और जानता हूं कि वह एक एमएस एसक्यूएल एक्सप्रेस 2005 सर्वर पर टक्कर मार रहा है ... क्या इससे कोई फर्क पड़ता है सब? – bsara

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