2009-07-07 15 views

उत्तर

66

आप autocommit पर implicit_transactions रवाना की स्थापना करके चालू कर सकते हैं:

SET IMPLICIT_TRANSACTIONS OFF 

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

शायद एक उदाहरण स्पष्ट है।

SET IMPLICIT_TRANSACTIONS ON 
UPDATE MyTable SET MyField = 1 WHERE MyId = 1 
COMMIT TRANSACTION 

इस डेटाबेस में कोई परिवर्तन नहीं लिखेंगे: इस डेटाबेस में कोई परिवर्तन लिखेंगे

SET IMPLICIT_TRANSACTIONS ON 
UPDATE MyTable SET MyField = 1 WHERE MyId = 1 
ROLLBACK TRANSACTION 

निम्न उदाहरण एक पंक्ति अपडेट करेगा, और उसके बाद शिकायत प्रतिबद्ध करने के लिए कोई लेनदेन नहीं है कि :

SET IMPLICIT_TRANSACTIONS OFF 
UPDATE MyTable SET MyField = 1 WHERE MyId = 1 
ROLLBACK TRANSACTION 

मिच गेहूं की तरह, ऑटोकॉमिट एसक्यूएल सर्वर 2000 और ऊपर के लिए डिफ़ॉल्ट है।

6

Autocommit SQL सर्वर का डिफ़ॉल्ट लेनदेन प्रबंधन मोड है। (SQL 2000 के बाद)

रेफरी: Autocommit Transactions

42

मैं एक और स्थायी और तेज़ तरीका चाहता था। क्योंकि मैं अपने वास्तविक अद्यतन/सम्मिलित प्रश्न लिखने से पहले अतिरिक्त लाइनें जोड़ना भूल जाता हूं।

मैंने इसे SET IMPLICIT_TRANSACTIONS विकल्पों से चेक-बॉक्स चेक करके किया। विकल्पों को नेविगेट करने के लिए उपकरण> विकल्प> क्वेरी निष्पादन> SQL सर्वर> ANSI अपने Microsoft SQL सर्वर प्रबंधन स्टूडियो में चयन करें।

बस अपने प्रश्नों को निष्पादित करने के बाद commit या rollback निष्पादित करना सुनिश्चित करें। अन्यथा, जिस तालिका में आप क्वेरी चलाते हैं वह दूसरों के लिए बंद कर दिया जाएगा।

+2

मैंने कोशिश की और मैं पुष्टि कर सकता हूं कि यह एसईटी IMPLICIT_TRANSACTIONS को लिखने जैसा बिल्कुल लगता है, क्योंकि यह 24 घंटों में अधिक सही उत्तर लगता है, मैं उपहार के साथ पुरस्कार दूंगा। – Revious

2

साथ SQLServer 2005 एक्सप्रेस, मैं क्या पाया कि भले बंद autocommit के साथ, एक Db तालिका में सम्मिलन मेरी वास्तव में प्रबंधन स्टूडियो सत्र से एक आदेश जारी करने के लिए प्रतिबद्ध के बिना अंजाम दिया था। केवल अंतर था, जब ऑटोोकॉमिट बंद था, मैं सभी सम्मिलन वापस रोल कर सकता था; * पर autocommit के साथ, मैं नहीं कर सका। * दरअसल, मैं गलत था। ऑटोकॉमिट मोड बंद होने के साथ, मैं केवल क्यूए (क्वेरी विश्लेषक) विंडो में परिवर्तन देखता हूं, जिससे आदेश जारी किए गए थे। अगर मैंने एक नई क्यूए (क्वेरी विश्लेषक) विंडो पॉप अप की है, तो मुझे पहली विंडो (सत्र) द्वारा किए गए परिवर्तन दिखाई नहीं देते हैं, यानी वे प्रतिबद्ध नहीं हैं! मुझे अन्य सत्रों (क्यूए विंडोज़) में बदलाव करने के लिए स्पष्ट प्रतिबद्धता या रोलबैक आदेश जारी करना पड़ा - मेरा बुरा! चीजें सही ढंग से काम कर रही हैं।

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