MultipleActiveResultSets = सही या कई कनेक्शन?


85

मेरे पास कुछ सी # है जिसमें मैं एक कनेक्शन पर एक पाठक बनाता हूं ( ExecuteReader), फिर उस पाठक में हर पंक्ति के लिए, एक और कमांड (साथ ExecuteNonQuery) करें। इस मामले में यह बेहतर है कि मैं MultipleActiveResultSets=Trueअपने कनेक्शन का उपयोग करूं या कई कनेक्शनों का उपयोग करूं?

जवाबों:


98

इस प्रकार के ऑपरेशन के लिए विशेष रूप से एकाधिक सक्रिय परिणाम सेट (MARS) जोड़े गए थे ताकि आपको SqlDataReader से पढ़ने और अतिरिक्त बैचों को निष्पादित करने में सक्षम होने के लिए एक ही समय में दो कनेक्शन खुले न हों।

MARS SQL सर्वर 2005 और इसके बाद के संस्करण के साथ संगत है। MSDN डॉक्स से उद्धृत करने के लिए:

मल्टीपल एक्टिव रिजल्ट सेट (MARS) की शुरुआत से पहले, डेवलपर्स को कुछ परिदृश्यों को हल करने के लिए या तो कई कनेक्शन या सर्वर-साइड कर्सर का उपयोग करना पड़ता था।

अधिक जानकारी के लिए देखें:

MSDN लाइब्रेरी - MARS ओवरव्यू

डेटा पढ़ने और अद्यतन करने के लिए काम किया उदाहरण:

MSDN लाइब्रेरी - डेटा हेरफेर (MARS) स्क्रॉल करना 'MARS के साथ डेटा पढ़ना और अपडेट करना'


21

जहाँ तक मुझे पता है कि MARS को जोड़ा गया था, तो हाँ मुझे लगता है कि आपको इसका उपयोग करना चाहिए।


0

इसका परीक्षण करने का सबसे अच्छा तरीका है कि SQLServer Profiler को फायर किया जाए, और देखें कि सर्वर की तरफ वास्तव में क्या होता है।

मेरा अनुमान है कि ExecuteNonQuery () का उपयोग करने के बाद से यह बेहतर नहीं होगा। तो, वास्तव में, आप कई परिणामों के साथ काम नहीं करते हैं।


6
यही मैंने सोचा था कि जब मैंने कोड लिखा था, लेकिन अगर मेरे पास MultipleActiveResultSets = True नहीं है, तो मुझे अभी भी एक "इस कमांड के साथ जुड़ा हुआ एक खुला DataReader पहले से ही बंद होना चाहिए।" ExecuteNonQuery पर अपवाद।
स्प्रिंटस्टार
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.