TransactionScope स्वचालित रूप से कुछ मशीनों पर MSDTC की ओर बढ़ रहा है?


284

हमारी परियोजना में हम TransactionScope का उपयोग कर रहे हैं ताकि यह सुनिश्चित हो सके कि हमारे डेटा एक्सेस लेयर में यह लेनदेन है। हम अपने अंतिम-उपयोगकर्ता की मशीनों पर सक्षम होने के लिए MSDTC सेवा की आवश्यकता नहीं करने का लक्ष्य बना रहे हैं ।

परेशानी यह है कि हमारे डेवलपर्स मशीनों में से आधे पर, हम MSDTC के साथ अक्षम कर सकते हैं। दूसरे आधे हिस्से में यह सक्षम होना चाहिए या उन्हें "MSDTC पर [SERVER] उपलब्ध नहीं है" त्रुटि संदेश मिलता है।

यह वास्तव में मुझे अपना सिर खुजलाता है और मुझे गंभीरता से ADO.NET लेनदेन की वस्तुओं के आधार पर होम-स्पून TransactionScope- जैसे समाधान पर वापस जाने पर विचार कर रहा है। यह प्रतीत होता है पागल है - हमारे डेवलपर के आधे है पर एक ही कोड है कि काम करता है (और बढ़ा नहीं है) करता है अन्य डेवलपर पर बढ़ा।

मैं ट्रेस के बेहतर जवाब की उम्मीद कर रहा था कि डीटीसी को एक लेन-देन क्यों बढ़ाया गया है लेकिन दुर्भाग्य से ऐसा नहीं है।

यहां कोड का एक नमूना बिट है जो परेशानी का कारण होगा, मशीनों पर जो आगे बढ़ने की कोशिश करता है, यह दूसरे कनेक्शन पर बढ़ने की कोशिश करता है। ओपेन () (और हां, उस समय कोई अन्य कनेक्शन खुला नहीं है।)

using (TransactionScope transactionScope = new TransactionScope() {
   using (SqlConnection connection = new SqlConnection(_ConStr)) {
      using (SqlCommand command = connection.CreateCommand()) {
         // prep the command
         connection.Open();
         using (SqlDataReader reader = command.ExecuteReader()) {
            // use the reader
            connection.Close();
         }
      }
   }

   // Do other stuff here that may or may not involve enlisting 
   // in the ambient transaction

   using (SqlConnection connection = new SqlConnection(_ConStr)) {
      using (SqlCommand command = connection.CreateCommand()) {
         // prep the command
         connection.Open();  // Throws "MSDTC on [SERVER] is unavailable" on some...

         // gets here on only half of the developer machines.
      }
      connection.Close();
   }

   transactionScope.Complete();
}

हमने वास्तव में खोदा है और यह पता लगाने की कोशिश की है। यहाँ मशीनों पर कुछ जानकारी दी गई है जो इस पर काम करती है:

  • देव 1: विंडोज 7 x64 SQL2008
  • देव 2: विंडोज 7 x86 SQL2008
  • देव 3: विंडोज 7 x64 SQL2005 SQL2008

डेवलपर्स यह पर काम नहीं करता है:

  • देव 4: विंडोज 7 x64, SQL2008 SQL2005
  • देव 5: विंडोज विस्टा x86, SQL2005
  • देव 6: विंडोज एक्सपी X86, SQL2005
  • मेरा होम पीसी: विंडोज विस्टा होम प्रीमियम, x86, SQL2005

मुझे उस सभी मशीनों को जोड़ना चाहिए, जो समस्या का शिकार करने के प्रयास में, Microsoft अद्यतन से उपलब्ध सभी चीज़ों से पूरी तरह से समझौता कर चुकी हैं।

अपडेट 1:

  • http://social.msdn.microsoft.com/forums/en-US/windowstransactionsprogramming/thread/a5462509-8d6d-4828-aefa-a197456081d3 एक समान समस्या का वर्णन करता है ... 2006 में वापस!
  • http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope%28VS.80%29.aspx - उस कोड नमूने को पढ़ें, यह स्पष्ट रूप से एक नेस्टेड-दूसरा कनेक्शन (एक दूसरे SQL सर्वर के लिए) को प्रदर्शित करता है वास्तव में) जो डीटीसी को आगे बढ़ाएगा। हम अपने कोड में ऐसा नहीं कर रहे हैं - हम अलग-अलग SQL सर्वर का उपयोग नहीं कर रहे हैं, न ही विभिन्न कनेक्शन स्ट्रिंग्स का उपयोग कर रहे हैं, और न ही हमारे पास द्वितीयक कनेक्शन खोलने के लिए नेस्टेड हैं - डीटीसी में वृद्धि नहीं होनी चाहिए
  • http://davidhayden.com/blog/dave/archive/2005/12/09/2615.aspx (2005 से) इस बारे में बात करता है कि SQL2000 से कनेक्ट होने पर DTC में वृद्धि हमेशा कैसे होगी। हम SQL2005 / 2008 का उपयोग कर रहे हैं
  • लेनदेन में वृद्धि पर http://msdn.microsoft.com/en-us/library/ms229978.aspx MSDN।

MSDN ट्रांजेक्शन-एस्केलेशन पेज बताता है कि निम्नलिखित शर्तों के कारण DTC में लेनदेन बढ़ेगा:

  1. कम से कम एक टिकाऊ संसाधन जो एकल-चरण सूचनाओं का समर्थन नहीं करता है, लेन-देन में सूचीबद्ध है।
  2. कम से कम दो टिकाऊ संसाधन जो एकल-चरण सूचनाओं का समर्थन करते हैं, लेनदेन में सूचीबद्ध हैं। उदाहरण के लिए, किसी एकल कनेक्शन को सूचीबद्ध करने से लेन-देन को बढ़ावा नहीं मिलता है। हालाँकि, जब भी आप डेटाबेस से संबंधित डेटाबेस के लिए दूसरा कनेक्शन खोलते हैं, तो System.Transactions इंफ्रास्ट्रक्चर यह पता लगाता है कि यह लेन-देन का दूसरा टिकाऊ संसाधन है, और इसे MSDTC लेनदेन में आगे बढ़ाता है।
  3. एक अलग एप्लिकेशन डोमेन या अलग प्रक्रिया के लिए लेनदेन को "मार्शल" करने का अनुरोध किया जाता है। उदाहरण के लिए, एक एप्लिकेशन डोमेन सीमा के पार लेनदेन ऑब्जेक्ट का क्रमांकन। लेन-देन ऑब्जेक्ट को मार्शल्ड-बाय-वैल्यू है, जिसका अर्थ है कि इसे किसी एप्लिकेशन डोमेन सीमा (यहां तक ​​कि उसी प्रक्रिया में) के माध्यम से पास करने का कोई भी प्रयास लेनदेन ऑब्जेक्ट के क्रमांकन में परिणाम करता है। आप ट्रांज़ेक्शन ऑब्जेक्ट को एक दूरस्थ विधि पर कॉल करके पास कर सकते हैं जो एक ट्रांज़ैक्शन को एक पैरामीटर के रूप में लेता है या आप एक दूरस्थ ट्रांसेक्शनल-सर्विस्ड घटक तक पहुँचने का प्रयास कर सकते हैं। यह लेन-देन ऑब्जेक्ट को क्रमबद्ध करता है और परिणाम में वृद्धि करता है, जब एक आवेदन डोमेन में लेनदेन को क्रमबद्ध किया जाता है। यह वितरित किया जा रहा है और स्थानीय लेनदेन प्रबंधक अब पर्याप्त नहीं है।

हम # 3 अनुभव नहीं कर रहे हैं। # 2 नहीं हो रहा है क्योंकि एक समय में केवल एक ही कनेक्शन होता है, और यह एक 'टिकाऊ संसाधन' के लिए भी होता है। क्या ऐसा कोई तरीका है जिससे # 1 हो सकता है? कुछ SQL2005 / 8 कॉन्फ़िगरेशन जो एकल-चरण सूचनाओं का समर्थन नहीं करने का कारण बनता है?

अपडेट 2:

पुन: जांच की गई, व्यक्तिगत रूप से, सभी के SQL सर्वर संस्करण - "Dev 3" में वास्तव में SQL2008 है, और "Dev 4" वास्तव में 5GB5 है। वह मुझे अपने सहकर्मियों पर फिर कभी भरोसा नहीं करना सिखाएगा। ;) डेटा में इस बदलाव के कारण, मुझे पूरा यकीन है कि हमें अपनी समस्या मिल गई है। हमारे SQL2008 डेवलपर्स समस्या का सामना नहीं कर रहे थे क्योंकि SQL2008 में भयानक मात्रा में प्रचुर मात्रा में शामिल है जो SQL2005 में नहीं है।

यह मुझे यह भी बताता है कि क्योंकि हम SQL2005 का समर्थन करने जा रहे हैं कि हम TransactionScope का उपयोग नहीं कर सकते हैं जैसे कि हम कर रहे हैं, और यदि हम TransactionScope का उपयोग करना चाहते हैं तो हमें एक एकल SqlConnection ऑब्जेक्ट को पास करने की आवश्यकता होगी ... जो स्थितियों में समस्याग्रस्त लगता है जहां SqlConnection को आसानी से पास नहीं किया जा सकता है ... यह सिर्फ ग्लोबल-SqlConnection उदाहरण की खुशबू आ रही है। प्यू!

अपडेट ३

बस यहाँ प्रश्न में स्पष्ट करने के लिए:

SQL2008:

  • किसी एकल ट्रांज़ेक्शनस्कोप के भीतर कई कनेक्शनों को अनुमति देता है (जैसा कि उपरोक्त नमूना कोड में दिखाया गया है।)
  • कैविएट # 1: यदि उन एकाधिक SqlConnections को नेस्टेड किया जाता है, अर्थात, दो या अधिक SqlConnections एक ही समय में खोले जाते हैं, तो TransactionScope तुरंत DTC में बढ़ जाएगा।
  • कैविएट # 2: यदि एक अतिरिक्त SqlConnection एक अलग 'टिकाऊ संसाधन' के लिए खोला जाता है (यानी: एक अलग SQL सर्वर), तो यह तुरंत DTC तक बढ़ जाएगा

SQL2005:

  • एक ही TransactionScope, अवधि के भीतर कई कनेक्शन की अनुमति नहीं देता है। जब दूसरा SqlConnection खोला जाएगा तो यह बढ़ जाएगा।

अद्यतन ४

और भी अधिक इस सवाल के मन में एक मेस की बस और अधिक स्पष्टता की खातिर के लिए उपयोगी है, और, आपके द्वारा एक साथ डीटीसी को आगे बढ़ाने के लिए SQL2005 प्राप्त कर सकते हैं एक SqlConnection :

using (TransactionScope transactionScope = new TransactionScope()) {
   using (SqlConnection connection = new SqlConnection(connectionString)) {
      connection.Open();
      connection.Close();
      connection.Open(); // escalates to DTC
   }
}

यह सिर्फ मेरे लिए टूटा हुआ लगता है, लेकिन मुझे लगता है कि मैं समझ सकता हूं कि क्या हर कॉल SqlConnection.Open()कनेक्शन पूल से हथियाने के लिए है।

"ऐसा क्यों हो सकता है, हालांकि?" यदि आप इसे खोलने से पहले उस कनेक्शन के खिलाफ SqlTableAdapter का उपयोग करते हैं, तो, SqlTableAdapter कनेक्शन को खोल देगा और बंद कर देगा, प्रभावी रूप से आपके लिए लेन-देन को समाप्त कर देगा क्योंकि अब आप इसे फिर से नहीं खोल सकते।

इसलिए, मूल रूप से, SQL2005 के साथ TransactionScope का सफलतापूर्वक उपयोग करने के लिए आपको कुछ प्रकार के वैश्विक कनेक्शन ऑब्जेक्ट की आवश्यकता होती है जो कि पहले TransactionScope के बिंदु से खुला रहता है, जब तक कि अब इसकी आवश्यकता न हो। एक वैश्विक कनेक्शन ऑब्जेक्ट की कोड-गंध के अलावा, पहले कनेक्शन को खोलना और इसे अंतिम रूप से बंद करना जितना संभव हो उतना देर से कनेक्शन खोलने और जल्द से जल्द इसे बंद करने के तर्क के खिलाफ है।


क्या आप "अन्य सामान यहां कर सकते हैं जो परिवेश लेनदेन में शामिल हो सकते हैं या नहीं" का विस्तार कर सकते हैं। निश्चित रूप से वहाँ क्या है जो कोड को कैसे व्यवहार करता है, इसे बहुत प्रभावित करता है?
रिचर्ड एनडी

2
# # 2 नहीं हो रहा है क्योंकि एक समय में केवल एक ही कनेक्शन होता है "- # 2 यह नहीं कहता है कि दूसरे कनेक्शन को उसी समय खोलने की आवश्यकता है, बस इसे उसी लेनदेन में सूचीबद्ध करने की आवश्यकता है।
जो

3
अद्यतन 4 के साथ वापस रिपोर्ट करने के लिए बहुत बहुत धन्यवाद, यह दिखाते हुए कि कैसे एक एकल SqlConnection के साथ वृद्धि हो सकती है। यह वही है जो मैं ध्यान से सुनिश्चित करने के बावजूद चला रहा था कि केवल एक ही SqlConnection का उपयोग किया जाता है। यह जानकर अच्छा लगा कि यह कंप्यूटर है जो पागल है और मैं नहीं। :-)
ओरन डेनिसन

कनेक्शन पूलिंग के संदर्भ में, यदि हमारे पास कई कनेक्शन हैं (और यदि आवश्यक हो तो नेस्टेड) ​​यदि हम एक बार में एक को खोल रहे हैं और बंद कर रहे हैं, तो हम 1 वास्तविक संयोजन पूल संसाधन या प्रति कनेक्शन का उपयोग कर रहे हैं, मैं यह निर्धारित करने के लिए इसे तर्कसंगत बनाने की कोशिश कर रहा हूं। उचित रूप से "प्रवर्तनीय" शंकुवृक्ष (जिसे मैं टालना चाहूंगा) को उचित रूप से स्कोप किया गया है या नहीं
brumScouse

1
एक ही लेन-देन के दायरे में निहित कनेक्शन वितरित वितरण को बढ़ावा देगा। SQL सर्वर 2008 और कई (ऊपर नेस्टिंग) से एक ही लेनदेन के दायरे के तहत कनेक्शन वितरित ट्रांसकिटॉन को बढ़ावा नहीं देगा।
प्रेगनटनकोंजेरो कैब्रोन 22

जवाबों:


71

एसक्यूएल सर्वर 2008 एस्केलेटिंग के बिना SQLConnectionएक में कई एस का उपयोग कर सकता है TransactionScope, बशर्ते कि कनेक्शन एक ही समय में खुले नहीं हैं, जिसके परिणामस्वरूप कई "भौतिक" टीसीपी कनेक्शन होंगे और इस प्रकार वृद्धि की आवश्यकता होगी।

मैं देख रहा हूँ कि आपके कुछ डेवलपर्स में SQL Server 2005 है और अन्य में SQL Server 2008 है। क्या आप सुनिश्चित हैं कि आपने सही पहचान की है कि कौन से एस्केलेटिंग हैं और कौन से नहीं?

सबसे स्पष्ट स्पष्टीकरण यह होगा कि SQL Server 2008 वाले डेवलपर्स ऐसे हैं जो आगे नहीं बढ़ रहे हैं।


हां, विवरण सही हैं, और क्या कोई वास्तव में कोड देख रहा है? लेन-देन के दायरे में दो कनेक्शन हैं, हालांकि, कभी-कभी केवल एक ही कनेक्शन होता है और एक ही समय में खोला जाता है। इसके अलावा, नहीं, डीटीसी उन मशीनों पर नहीं चल रही है जो काम कर रही हैं।
योपगर्नेक

1
"हालांकि, कभी-कभी केवल एक ही कनेक्शन होता है और एक ही समय में खोला जाता है" - यह प्रासंगिक क्यों है? SQL2005 के साथ, यदि आप लेन-देन के दायरे में एक से अधिक कनेक्शन खोलते हैं, तो आप आगे बढ़ेंगे कि वे एक साथ खुले रहते हैं या नहीं। यदि आप इसके बारे में सोचते हैं तो यह तर्कसंगत है।
जो

आप और hwiechers अब मेरे पास दूसरा अनुमान लगाने वाले हैं और मैं सोमवार को काम में लगने के लिए उत्सुक हूं और अपनी व्यक्तिगत मशीनों का अधिक बारीकी से निरीक्षण कर रहा हूं और यह सुनिश्चित करता हूं कि SQL सर्वर संस्करण पहले की तरह रिपोर्ट किए गए हैं।
Yoopergeek

19
आप और hwiechers सही हैं। मेरे पूरे चेहरे पर अंडा है। क्लू-स्टिक के साथ मुझे मारने के लिए धन्यवाद। :) क्योंकि आप पहले थे, आपको जवाब मिलता है। मैं स्पष्टीकरण के एक बिंदु को जोड़ना चाहूंगा, हालांकि - SQL2008 कई कनेक्शनों को खोलने की अनुमति देता है, लेकिन एक ही समय में नहीं। अभी भी किसी भी समय केवल एक ही कनेक्शन खुला हो सकता है या TransactionScope DTC तक बढ़ जाएगा।
योपगर्नेक

@Yoopergeek मैं यह सत्यापित कर सकता था कि आपका "एक ही समय में नहीं" महत्वपूर्ण है और तदनुसार @Joe का उत्तर संपादित किया गया है। परीक्षण करते समय टीसीपी कनेक्शनों की निगरानी से पता चला है कि पुराने टीसीपी कनेक्शन का पुन: उपयोग किया जाएगा जब कनेक्शन एक ही समय में उपयोग नहीं किए जाते हैं, और इस प्रकार यह सर्वर साइड पर TransactionScopeएकल के साथ कर सकता है COMMIT, जिससे एस्केलेशन सुपरफ्लस हो जाएगा।
यूजीन बेरेसोवस्की

58

विषय पर मेरे शोध का परिणाम:

यहां छवि विवरण दर्ज करें

देखें बचें वितरित लेन-देन करने के लिए अवांछित वृद्धि

मैं अभी भी ओरेकल की वृद्धि के व्यवहार की जांच कर रहा हूं: क्या डीबी के लिए एक ही डीबी में कई कनेक्शनों का लेनदेन होता है?


1
अपने शोध को साझा करने के लिए धन्यवाद। यह वास्तव में मदद की। एक और क्विक क्वेरी। क्या TransactionScope () और sqlConnection.BeginTransaction () के बीच अंतर है?
बेग

इस सुविधा अनुरोध के अनुसार , ODAC 12C को अब SQL 2008 के रूप में व्यवहार करना चाहिए, समान डेटा स्रोत से लगातार कनेक्शन का उपयोग करते समय वितरित करने के लिए प्रचार नहीं करना चाहिए।
फ्रैडरिक

31

यही कारण है कि कोड होगा जब 2005 से कनेक्ट करने में वृद्धि का कारण है।

MSDN पर दस्तावेज़ की जाँच करें - http://msdn.microsoft.com/en-us/library/ms172070.aspx

SQL सर्वर 2008 में प्रचारित लेन-देन

.NET फ्रेमवर्क और SQL सर्वर 2005 के संस्करण 2.0 में, TransactionScope के अंदर एक दूसरा कनेक्शन खोलने से स्वचालित रूप से पूर्ण वितरित लेनदेन के लिए लेनदेन को बढ़ावा मिलेगा, भले ही दोनों कनेक्शन समान कनेक्शन स्ट्रिंग्स का उपयोग कर रहे हों। इस मामले में, एक वितरित लेनदेन अनावश्यक ओवरहेड जोड़ता है जो प्रदर्शन को कम करता है।

SQL सर्वर 2008 और .NET फ्रेमवर्क के संस्करण 3.5 के साथ शुरू, पिछले लेनदेन बंद होने के बाद लेन-देन में एक और कनेक्शन खोला गया है, तो स्थानीय लेनदेन अब वितरित लेनदेन के लिए प्रचारित नहीं किया जाता है। यदि आप पहले से ही कनेक्शन पूलिंग का उपयोग कर रहे हैं और लेन-देन में सूचीबद्ध कर रहे हैं तो इसके लिए आपके कोड में कोई बदलाव करने की आवश्यकता नहीं है।

मैं समझा नहीं सकता कि देव 3: विंडोज 7 x64, SQL2005 सफल क्यों है और देव 4: विंडोज 7 x64 विफल रहता है। क्या आप सुनिश्चित हैं कि दूसरा रास्ता गोल नहीं है?


10

मुझे नहीं पता कि यह उत्तर क्यों हटाया गया था लेकिन ऐसा लगता है कि कुछ प्रासंगिक जानकारी है।

17:42 पर एडुआर्डो में 4 अगस्त को उत्तर दिया

  1. लेन-देन पर ऑटो सूची से बचने के लिए कनेक्शन स्ट्रिंग पर Enlist = false सेट करें ।

  2. लेन-देन के दायरे में प्रतिभागियों के रूप में मैन्युअल रूप से कनेक्शन सूचीबद्ध करें । [ मूल लेख पुराना] या ऐसा करते हैं: स्वचालित MSDTC पदोन्नति को रोकने के लिए [archive.is]


msdn.microsoft.com/en-us/library/ms172153%28v=VS.80%29.aspx नहीं मिला, विजुअल स्टूडियो 2005 सेवानिवृत्त प्रलेखन
किकेनेट

2

मुझे यकीन नहीं है कि अगर नेस्टेड कनेक्शन मुद्दा है। मैं SQL सर्वर का एक स्थानीय उदाहरण कह रहा हूँ और यह DTC उत्पन्न नहीं करता है ??

    public void DoWork2()
    {
        using (TransactionScope ts2 = new TransactionScope())
        {
            using (SqlConnection conn1 = new SqlConnection("Data Source=Iftikhar-PC;Initial Catalog=LogDB;Integrated Security=SSPI;"))
            {
                SqlCommand cmd = new SqlCommand("Insert into Log values(newid(),'" + "Dowork2()" + "','Info',getDate())");
                cmd.Connection = conn1;
                cmd.Connection.Open();
                cmd.ExecuteNonQuery();

                using (SqlConnection conn2 = new SqlConnection("Data Source=Iftikhar-PC;Initial Catalog=LogDB;Integrated Security=SSPI;Connection Timeout=100"))
                {
                    cmd = new SqlCommand("Insert into Log values(newid(),'" + "Dowork2()" + "','Info',getDate())");
                    cmd.Connection = conn2;
                    cmd.Connection.Open();
                    cmd.ExecuteNonQuery();
                }
            }

            ts2.Complete();
        }
    }

SQL सर्वर का कौन सा संस्करण आप उपयोग कर रहे हैं? मुझे आश्चर्य है कि @Peter Meinl के उत्तर को 2008R2 और / या Denali में किए गए किसी भी परिवर्तन को प्रतिबिंबित करने के लिए अपडेट करने की आवश्यकता है।
यूपहर्गेक

मैं SQL Server 2008 R2 का उपयोग कर रहा हूं।
इफ्तिखार अली

मुझे आश्चर्य है कि अगर 2008 R2 बेहतर व्यवहार है? @ हाईवेर्स का जवाब भी मुझे आश्चर्यचकित करता है यदि आपके द्वारा संकलित फ्रेमवर्क के संस्करण में वृद्धि को रोका जा रहा है। अंत में, मुझे आश्चर्य है कि अगर यह एक स्थानीय आर 2 उदाहरण है तो इससे कोई फर्क नहीं पड़ता। काश मेरे पास यह जांचने का समय / संसाधन होता कि यह 2008 R2 और SQL सर्वर 2012 की रिलीज़ के साथ कैसे बदल गया है।
Yoopergeek

निश्चित नहीं है कि क्या नेस्टेड कनेक्शन मुद्दा है? योग्य ... अच्छी तरह से खिलने के बाद इसे हटा दें! पृथ्वी पर लोग बयानों का उपयोग करके घोंसला क्यों बनाते हैं, जब आवश्यक नहीं है, मुझे कभी पता नहीं चलेगा।
पॉल ज़हरा

1

यदि आप अंदर 1 से अधिक कनेक्शन का उपयोग करते हैं, तो TransactionScope हमेशा डीटीसी लेनदेन के लिए आगे बढ़ता है। डीटीसी विकलांगों के साथ ऊपर दिए गए कोड के साथ काम करने का एकमात्र तरीका यह है कि यदि आप एक बड़े मौके से दोनों बार कनेक्शन पूल से एक ही कनेक्शन प्राप्त करते हैं।

"परेशानी हमारी डेवलपर्स मशीनों के आधे हिस्से पर है, हम MSDTC के साथ अक्षम हो सकते हैं।" क्या आपको यकीन है कि यह अक्षम है;)


0

सुनिश्चित करें कि आपका कनेक्शनस्ट्रिंग झूठे के लिए पूलिंग सेट नहीं करता है। यह TransactionScope में प्रत्येक नए SqlConnection के लिए एक नए कनेक्शन का परिणाम देगा और इसे DTC तक बढ़ा देगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.