2009-02-04 13 views
60

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

उत्तर

71

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

एमएआरएस एसक्यूएल सर्वर 2005 और उसके बाद के संस्करण के साथ संगत है। MSDN डॉक्स से उद्धृत करने के लिए: एकाधिक सक्रिय परिणाम समूह की शुरूआत (MARS) इससे पहले कि

, डेवलपर्स कुछ परिदृश्यों को हल करने के लिए या तो एक से अधिक कनेक्शन या सर्वर-साइड कर्सर का उपयोग करने के लिए किया था।

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

MSDN Library - MARS Overview

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

MSDN Library - Manipulating Data (MARS) स्क्रॉल करने के लिए नीचे 'पढ़ना और मंगल के साथ डाटा अपडेट कर रहा है'

+0

+1 – pilotcam

17

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

0

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

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

+5

मैंने सोचा था कि जब मैंने कोड लिखा था, लेकिन अगर मेरे पास एकाधिक एक्टिव रीसेट्ससेट्स = ट्रू नहीं है तो मुझे अभी भी एक "पहले से ही एक खुला डेटा रीडर है जो इस कमांड से जुड़ा हुआ है जिसे पहले बंद किया जाना चाहिए।" ExecuteNonQuery पर अपवाद। SQL Server 2005 और ऊपर का उल्लेख करने के लिए – Sprintstar

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