मैं ADO.Net + C# + VSTS 2008 + ADO.Net का उपयोग कर रहा एसक्यूएल सर्वर 2008 उद्यम से कनेक्ट करने के। मैं यहां एक ही पैटर्न/नमूना का उपयोग कर रहा हूं - एक प्रविष्टि (पंक्ति) द्वारा डेटा एक प्रविष्टि (पंक्ति) को पुनर्प्राप्त करने के लिए ADO.Net DataReader का उपयोग कर रहा हूं।ADO.Net DataReader टाइमआउट मुद्दा
http://msdn.microsoft.com/en-us/library/haa3afyz.aspx
मेरा प्रश्न है, अगर मैं इस नमूने में SqlCommand समाप्ति सेट, 1. मुझे लगता है कि समय समाप्ति हम अधिकतम मान के रूप इस्तेमाल कर सकते हैं कितना समय एक specifc पंक्ति को पुनः प्राप्त करने के लिए लागू होता है, न कि कुल पूरे डेटा एंट्री-बाय-एंट्री लूप के लिए टाइमआउट?
Btw: पाश मेरा मतलब है,
while (reader.Read())
{
Console.WriteLine("{0}\t{1}", reader.GetInt32(0),
reader.GetString(1));
}
2. और इस समय समाप्ति केवल मायने रखती है कि कितना समय यह डेटाबेस से डेटा प्रविष्टि को पुनः प्राप्त करने देता है और इस समय समाप्ति कितना समय हम सौदा के साथ कोई संबंध नहीं है प्रत्येक प्रविष्टि के साथ (उदाहरण के लिए यदि हम 20 सेकंड तक टाइमआउट सेट करते हैं, और यदि डेटाबेस से एक डेटा एंट्री पुनर्प्राप्त करने में 1 सेकंड लगते हैं, और मेरे एप्लिकेशन लॉजिक के लिए डेटा प्रविष्टि में हेरफेर करने में 30 सेकंड लगते हैं, तो टाइमआउट कभी नहीं होगा)।
सही समझ?
धन्यवाद मार्क, 1. क्या डेटाटाइडर के परिदृश्य के लिए आपका मतलब है, जब मुझे डेटा रीडर उदाहरण प्राप्त होता है, तो टाइमआउट कोई प्रभाव नहीं लेगा? 2. यदि हां, तो मेरा भ्रम है, मैंने डेटारिएडर के लिए पहले कुछ दस्तावेज़ पढ़े हैं, ADO.Net स्ट्रीमिंग फेशन में डेटा पुनर्प्राप्त करता है, यानी डेटारिएडर बनने पर SQL सर्वर से सभी डेटा पुनर्प्राप्त नहीं किए जाते हैं। यदि यह सत्य है, तो ADO.Net क्लाइंट और SQL सर्वर सर्वर पक्ष के बीच और अधिक स्थानांतरण होना चाहिए?लेकिन जैसा कि आपने कहा था कि डेटाराइडर के निर्माण के बाद टाइमआउट अब और प्रभावित नहीं होता है, इसलिए आगे स्ट्रीमिंग स्थानांतरण के लिए कोई टाइमआउट नियंत्रण नहीं है? – George2
मेरी उपरोक्त टिप्पणियों के लिए मेरी चिंता यह है कि, क्लाइंट डेटारेडर को बहुत लंबे समय तक पकड़ेंगे, और मुझे लगता है कि स्ट्रीमिंग मोड में (क्योंकि एडीओ.Net भविष्यवाणी नहीं कर सकता कि क्लाइंट अधिक डेटा पढ़ना चाहता है या सिर्फ पाठक लूप को तोड़ना चाहता है), कनेक्शन हर समय जिंदा रखा जाएगा। मैं ऐसे व्यवहार के लिए टाइमआउट नियंत्रण रखना चाहता हूं जो एडीओ.Net से कनेक्शन को बंद/रिलीज़ करने के लिए ऐसे लंबे लाइव रीडर को मजबूर करता है। कोई भी SqlCommand (DataReader बनाने के लिए प्रयुक्त होता है) लगता है टाइमआउट वह नहीं है जिसे मैं ढूंढ रहा हूं? धन्यवाद। – George2
आप बिल्कुल सही हैं: यदि आप डेटारिएडर को लंबे समय तक खोलते रहते हैं, तो अंतर्निहित कनेक्शन उसी समय के लिए खुला रखा जाएगा। ऐसा करने से आपको रोकने के लिए कोई समय नहीं है - यह सुनिश्चित करने के लिए आपकी ज़िम्मेदारी है कि आप इसे बहुत लंबे समय तक नहीं बनाते –