Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

कनेक्शन बंद होने पर एक अनकमिटेड ट्रांजैक्शन का क्या होता है?

कनेक्शन पूलिंग लागू होने पर यह खुला रह सकता है। उदाहरण:कमांड टाइमआउट लॉक और TXN छोड़ सकता है क्योंकि क्लाइंट "abort" के रूप में भेजता है।

2 समाधान:

  • क्लाइंट में टेस्ट करें, शाब्दिक रूप से:

    IF @@TRANCOUNT <> 0 ROLLBACK TRAN

  • SET XACT_ABORT ON Use का उपयोग करें TXN की सफाई सुनिश्चित करने के लिए:प्रश्न 1 और प्रश्न 2

मैं हमेशा SET XACT_ABORT ON . का उपयोग करता हूं ।

इस SQL ​​​​टीम ब्लॉग से:

<ब्लॉकक्वॉट>

ध्यान दें कि कनेक्शन पूलिंग के साथ, केवल बिना रोलबैक के कनेक्शन को बंद करने से कनेक्शन केवल पूल में वापस आ जाएगा और लेन-देन तब तक खुला रहेगा जब तक कि पूल से पुन:उपयोग या हटा नहीं दिया जाता है। इसके परिणामस्वरूप ताले अनावश्यक रूप से शुरू हो सकते हैं और अन्य टाइमआउट और रोलिंग ब्लॉक का कारण बन सकते हैं

MSDN से, अनुभाग "लेन-देन समर्थन" (मेरा बोल्ड)

<ब्लॉकक्वॉट>

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर (T-SQL) में विभाजन योजनाओं की सूची लौटाएँ

  2. बाधा का नाम जाने बिना विदेशी कुंजी छोड़ें?

  3. ब्रेंट ओजर SQL सर्वर आंतरिक और बाहरी विखंडन की व्याख्या करता है

  4. Sql सर्वर अस्थायी तालिका गायब हो जाती है

  5. ऑडिट तालिका में SQL सर्वर में रिकॉर्ड परिवर्तन लॉग करें