2009-06-19 18 views
5

निर्दिष्ट किए बिना SQLCommand निष्पादित करना हमारे पास SQL ​​सर्वर डेटाबेस पर SELECT क्वेरी निष्पादित करने वाले SqlCommand के माध्यम से हमारे एप्लिकेशन में प्राप्त डेटा की कुछ सूचियां हैं। हम स्पष्ट रूप से SqlCommand पर एक लेनदेन सेट नहीं करते हैं, इसके बजाय बस इसे एक SQL कनेक्शन से गुजरते हैं और इसे चलाते हैं। क्या यह मामला है कि जब कोई लेनदेन निर्दिष्ट नहीं किया जाता है कि SQL सर्वर ReadCommitted के डिफ़ॉल्ट अलगाव लेवल के साथ डिफ़ॉल्ट लेनदेन शुरू करेगा और उपयोग करेगा?एक लेनदेन

उत्तर

3

SQL सर्वर स्पष्ट लेनदेन के बिना खुशी से काम कर सकता है। लेकिन हाँ, मेरा मानना ​​है कि यह अनिवार्य रूप से पढ़ा गया है (जब तक, निश्चित रूप से, आप अपनी क्वेरी ऑब्जेक्ट्स जैसे UPDLOCK/NOLOCK) में अतिरिक्त संकेत जोड़ते हैं।

DBCC USEROPTIONS 

जो शो (दूसरों के बीच):: आप के साथ इस जाँच कर सकते हैं

isolation level read committed 
5

एसक्यूएल अपने बयानों के लिए परोक्ष एक सौदे बनाता है, और जब बयान पूरा करता है इस लेन-देन के लिए प्रतिबद्ध है। इस लेनदेन का अलगाव स्तर वर्तमान अलगाव स्तर होगा, जो कमांड को पढ़ने के लिए डिफ़ॉल्ट है। कुछ बयान मौजूदा अलगाव स्तर को ओवरराइट करते हैं और पढ़ा गया पढ़ा जाता है (उदाहरण के लिए प्राप्त करें)।

यदि आपका एसक्यूएलएमएंड एक बैच (अधिक कथन) निष्पादित करता है तो तालिकाओं तक पहुंचने वाले प्रत्येक कथन का अपना लेनदेन बन जाएगा।

डिफ़ॉल्ट autocommit of transactions एसईटी IMPLICIT_TRANSACTION चालू करके नियंत्रित किया जाता है। अधिक जानकारी के लिए

Controlling Transactions देखें।

+0

शायद मुझे यहां एक ही समस्या है: http://stackoverflow.com/questions/41096727/is-there-an-implicit-transaction-in-sqlcommand-executenonquery – VansFannel

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