2014-09-23 7 views
9

मेरे पास एक सी # प्रोग्राम है जो संग्रहीत प्रक्रिया चलाता है। यदि मैं माइक्रोसॉफ्ट एसक्यूएल सर्वर प्रबंधन स्टूडियो से संग्रहित प्रक्रिया चलाता हूं, तो यह ठीक काम करता है। निष्पादित करने में लगभग 30 सेकंड लगते हैं। हालांकि, अगर मैं एक सी # प्रोग्राम से एक ही संग्रहीत प्रक्रिया को चलाने का प्रयास करता हूं, तो यह समय समाप्त हो जाता है, भले ही मैंने कनेक्शन स्ट्रिंग में टाइमआउट को 10 मिनट तक सेट किया हो।SqlCommand का उपयोग कर स्टोर प्रक्रिया निष्पादित करते समय मैं टाइमआउट त्रुटि को कैसे रोकूं?

using (connection1 = new SqlConnection("user id=user_id_goes_here;password=password_goes_here;initial catalog=database_name_goes_here;data source=server_name_goes_here;connection timeout=600)) 

यह के बारे में 30 सेकंड के बाद टाइम आउट करने के लिए, भले ही मैं इसे स्थापित किया है 10 मिनट (परीक्षण प्रयोजनों के लिए) की अनुमति के लिए लग रहे हैं।

+1

आप प्रक्रिया को कैसे कॉल कर रहे हैं? कुछ ऐसा जो प्रबंधन स्टूडियो से 30 सेकंड लेता है उसे सी # से 10 मिनट नहीं लेना चाहिए, जब तक कि आपने कहीं गलती नहीं की है जो इंडेक्स या आंकड़े तोड़ती है। –

उत्तर

17

कनेक्शन में टाइमआउट केवल डेटाबेस से कनेक्ट करने के लिए है।

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

आईई।

using (SqlCommand cmd = new SqlCommand()) 
{ 
    cmd.Connection = connection1; 
    cmd.CommandTimeout = 240; //in seconds 
    //etc... 
} 
+3

यदि आप 0 का उपयोग करते हैं तो इसका कोई मतलब नहीं है। – Juan

+2

बस यह इंगित करने के लिए कि यह समस्या के लिए सिर्फ "बैंड सहायता" है। यह समझने के लिए बेहतर है कि आप अंतर्निहित समस्या को हल करके पहली जगह में टाइमआउट क्यों प्राप्त कर रहे हैं। –

+1

@ChrisDunaway मुझे लगता है कि आपने कभी बड़े डेटाबेस पर काम नहीं किया? मैं परियोजनाओं में था एसपीएस रात में घंटों के लिए टेराबाइट स्तर डेटा सेट एकीकृत करने के लिए काम कर रहा था। कभी-कभी आपको चीजों के लिए समय चाहिए। – TomTom

6

कनेक्शन स्ट्रिंग में निर्दिष्ट करने के बजाय SqlCommand.CommandTimeout अपने आदेश की संपत्ति का उपयोग करें।

संदर्भ के लिए MSDN देखें।

2

आपको एसक्यूएल कमांड ऑब्जेक्ट की कमांडटाइमआउट प्रॉपर्टी सेट करके इसे कोड i.e में सेट करने की आवश्यकता है।

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

धन्यवाद, मुझे कुछ हफ्ते पहले भी एक ही समस्या का सामना करना पड़ा था और वेब कॉन्फिग बनाम कमांड ऑब्जेक्ट में मूल्यों के बीच उलझन में था। आपका प्रश्न को मंजूरी दे दी अब मेरा शक है :)

reference link from msdn

1

कनेक्शन समयबाह्य जबकि वास्तव में एसक्यूएल सर्वर से कनेक्ट होने की अनुमति समय की मात्रा को दर्शाता है। कमांड टाइमआउट यह दर्शाता है कि कमांड चलाने के लिए कितना समय स्वीकार्य है; इस मामले में, एक संग्रहीत प्रक्रिया। SqlCommand.CommandTimeout वह संपत्ति है जिसे आप ढूंढ रहे हैं।

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

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