2009-06-25 17 views
6

एमएसएसक्यूएल सर्वर पर संग्रहीत प्रक्रिया का कहना है कि BEGIN TRANSACTION/COMMIT TRANSACTION का उपयोग कर एक एसक्यूएल लेनदेन का उपयोग करता है, यह SqlConnection.BeginTransaction() के माध्यम से ADO.NET का उपयोग करके शुरुआत और एक से कैसे भिन्न होता है?संग्रहित प्रक्रिया स्तर पर एक SQL लेनदेन और SqlConnection स्तर पर एक अंतर क्या है?

उत्तर

3

ADO.NET के लिए, इसमें कोई फर्क नहीं पड़ता। यह एमएसडीएन में स्पष्ट रूप से कहा गया है जहां एसकएलट्रांसक्शन ऑब्जेक्ट के लिए कमिट विधि को "विफल होने पर सर्वर पर वापस ले जाया गया है" विफल रहता है।

इसके अलावा, एसक्यूएल सर्वर प्रोफाइलर "सेट ट्रांज़ेक्शन इशोलेशन लेवल को पढ़ा जाता है; BEGIN TRAN" जैसे ही आप निष्पादित करते हैं। कनेक्शन पर बैजिन ट्रांसलेशन।

एडीओ (.NET नहीं) के लिए, हालांकि, यह नहीं है। यह अच्छे परिदृश्यों को प्रभावी ढंग से, नेस्टेड लेनदेन के साथ अनुमति देता था (सर्वर ट्रांस क्लाइंट के अंदर घोंसला था)। बावजूद मैंने इसका बहुत उपयोग किया है, मैं इस बात को परिभाषित नहीं कर सकता कि उस मामले में "क्लाइंट लेनदेन" क्या था।

2

यदि आप एक पंक्ति में एकाधिक संग्रहित प्रो को कॉल करने जा रहे हैं और आप रोलबैक करने में सक्षम होना चाहते हैं, तो आपको SqlConnection.BeginTransaction() का उपयोग करके कोड से लेनदेन का प्रबंधन करना होगा। अन्यथा यह वही है।

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