केवल एक कनेक्शन होगा, प्रक्रिया को चलाने के लिए इसका उपयोग किया जाता है, इससे कोई फर्क नहीं पड़ता कि संग्रहित प्रक्रिया में कितने SQL कमांड हैं।
क्योंकि आपके पास संग्रहीत प्रक्रिया में कोई स्पष्ट BEGIN ट्रांज़ेक्शन नहीं है, इसलिए प्रत्येक कथन किसी भी त्रुटि के दौरान किसी भी बदलाव को रोलबैक करने की कोई क्षमता नहीं रखेगा।
हालांकि, अगर आप संग्रहीत प्रक्रिया को कॉल करने से पहले एक BEGIN ट्रांज़ेक्शन जारी करते हैं, तो सभी कथन लेनदेन के भीतर समूहीकृत होते हैं और संग्रहीत प्रक्रिया निष्पादन के बाद या तो COMMITted या रोलबैक किया जा सकता है।
संग्रहीत प्रक्रिया के भीतर से, आप यह निर्धारित कर सकते हैं कि आप सिस्टम चर @@TRANCOUNT (Transact-SQL) के मान की जांच करके लेनदेन के भीतर चल रहे हैं या नहीं। शून्य का मतलब है कि कोई लेनदेन नहीं है, और कुछ भी दिखाता है कि आप कितने घोंसला वाले लेनदेन में हैं। आपके एसक्यूएल सर्वर संस्करण के आधार पर आप XACT_STATE (Transact-SQL) का भी उपयोग कर सकते हैं।
आप निम्नलिखित करते हैं: प्रक्रिया के भीतर
BEGIN TRANSACTION
EXEC my_stored_procedure_with_5_statements_inside @Parma1
COMMIT
सब कुछ लेन-देन से आच्छादित है, सभी 6 बयान (EXEC एक बयान लेन-देन के अंतर्गत आने वाले है, 1 + 5 = 6)। आप ऐसा करते हैं:
BEGIN TRANSACTION
EXEC my_stored_procedure_with_5_statements_inside @Parma1
EXEC my_stored_procedure_with_5_statements_inside @Parma1
COMMIT
दो प्रक्रिया कॉल के अंतर्गत सब कुछ लेन-देन के अंतर्गत आते हैं, सभी 12 बयान (2 अधिकारियों दोनों बयान लेन-देन, 1 + 5 + 1 + 5 = 12 के अंतर्गत आने वाले हैं)।
स्रोत
2010-04-12 12:52:10
तो आप कहते हैं कि असल में, संग्रहीत प्रक्रिया के भीतर प्रत्येक कथन अपना लेनदेन बनाता है, यानी पांच लेनदेन में एक संग्रहीत प्रक्रिया को पांच लेनदेन में निष्पादित किया जाता है? – Sleepless
यदि प्रक्रिया में या प्रक्रिया को लपेटने के बाहर कोई लेनदेन नहीं है, तो प्रक्रिया में प्रत्येक कथन काम की एक स्वायत्त इकाई है। वास्तव में लेनदेन नहीं है, क्योंकि आप फिर से प्रतिबद्ध या रोल नहीं कर सकते हैं। यदि आप एक लेनदेन में एक प्रक्रिया कॉल लपेटते हैं, तो प्रक्रिया में सब कुछ उस लेनदेन के भीतर निष्पादित किया जाता है। –
धन्यवाद! बीटीडब्ल्यू, आप कोड कोड स्वरूपण कैसे करते हैं मैं स्पष्ट रूप से विफल रहा? – Sleepless