2013-09-26 8 views
15

में अद्यतन के बाद Commit कथन निष्पादित करने की आवश्यकता है, मैंने SQL सर्वर प्रबंधक के माध्यम से अपने रिकॉर्ड में कुछ अद्यतन किया है।क्या हमें SQL सर्वर

चूंकि अद्यतन कथन में स्पष्ट प्रतिबद्धता नहीं है, इसलिए मैं इसे मैन्युअल रूप से लिखने की कोशिश कर रहा हूं।

Update mytable 
set status=0; 
Commit; 

के रूप में कमिट कोई लेनदेन ओरेकल की जरूरत नहीं है के विपरीत

+0

में सेट कर सकते हैं IMPLICIT_TRANSACTIONS आप करने से पहले किसी लेन-देन शुरू करना चाहिए। –

+2

आपको एक लेनदेन खोलना चाहिए। इसके अंदर आपको अद्यतन करना चाहिए और परिवर्तन करना चाहिए। – lexeme

+0

देखें कि यह यहां कैसे काम करता है: http://www.codeproject.com/Articles/10223/Using-transactions-in-ADO-NET – lexeme

उत्तर

30

एसक्यूएल सर्वर प्रबंधन स्टूडियो ने निहित प्रतिबद्धता चालू कर दी है, इसलिए निष्पादित किए गए सभी बयान पूरी तरह से प्रतिबद्ध हैं।

यदि आप ओरेकल पृष्ठभूमि से आते हैं तो यह एक डरावनी चीज हो सकती है, जहां डिफॉल्ट स्वचालित रूप से कमांड नहीं होता है, लेकिन यह बहुत अधिक समस्या नहीं है।

आप अभी भी तदर्थ लेनदेन का उपयोग करना चाहते हैं, तो आप हमेशा

BEGIN TRANSACTION 
SSMS भीतर

निष्पादित कर सकते हैं, और प्रणाली की तुलना में इंतजार कर रहा है आप डेटा के लिए प्रतिबद्ध करने के लिए।

आप ओरेकल व्यवहार को दोहराने, और एक अंतर्निहित लेन-देन शुरू करने के लिए चाहते हैं, जब भी कुछ DML/DDL जारी किया जाता है, तो आप सेट चेकबॉक्स

Tools -> Options -> Query Execution -> SQL Server -> ANSI 
+2

हाय @SWeko। बहुत उपयोगी, thx। क्या मुझे लगता है कि चेकबॉक्स अनचेक करने का मतलब है कि लेनदेन पूरी तरह से किया जाता है? मेरी (डिफ़ॉल्ट) स्थिति है। उस चेकबॉक्स का नामकरण अजीब है, फिर। बीटीडब्ल्यू, यहां संबंधित समस्या: http://stackoverflow.com/questions/17576649/safely-delete-rows-in-sqlserver-so-you-can-rollback-a-commit –

+0

उत्तर – Patan

+0

के उत्तर के लिए धन्यवाद यदि चेकबॉक्स है चेक किया गया, फिर एक 'चयन' कथन, स्पष्ट रूप से एक लेनदेन शुरू करता है, जिसे स्पष्ट रूप से कम करने की आवश्यकता होगी। – SWeko

5

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