2013-03-18 10 views
5

लेनदेन का उपयोग किये बिना कमांड को कैसे हटाएं? अगर हम नहीं कर सकते हैं, तो Truncate & के बीच क्या अंतर है?लेनदेन का उपयोग किए बिना कमांड को कैसे हटाएं

+2

हम किस प्लेटफ़ॉर्म के बारे में बात कर रहे हैं? –

+0

पर्याप्त जानकारी नहीं दी गई है। – bot

+0

SQL सर्वर 2012 में कोड लिख रहा हूँ। –

उत्तर

2

आप एक एक सौदे के बिना नहीं ROLLBACK आपरेशन कर सकते हैं। आप शायद implicit transactions का उपयोग कर सकते हैं, लेकिन आपको अभी भी COMMIT या ROLLBACK पर कॉल करने की आवश्यकता है। हालांकि, बेहतर नियंत्रण के लिए, किसी भी तरह BEGIN TRANSACTION...COMMIT/ROLLBACK ब्लॉक में कथन को लपेटना बेहतर है। इस तरह आप किसी भी भ्रम और IMPLICIT_TRANSACTION सेटिंग का उपयोग करने की आवश्यकता से बचेंगे।

2

आप वापस रोल कर सकते हैं हटाने या TRUNCATE (और सबसे अन्य कार्यों) यदि और केवल यदि वे एक सौदे कि अभी तक प्रतिबद्ध नहीं कर रहा है का हिस्सा हैं। वैकल्पिक रूप से आप बैकअप से हटाए गए/छंटनी वाले डेटा को पुनर्स्थापित कर सकते हैं।

TRUNCATE और DELETE के बीच कई मतभेद हैं। सबसे विशेष रूप से TRUNCATE केवल एक तालिका खाली कर सकता है जबकि DELETE केवल आपके द्वारा निर्दिष्ट पंक्तियों को हटा देता है। TRUNCATE पंक्ति स्तर की बजाय पृष्ठ स्तर पर डेटा को हटा देता है और लॉग करता है, जो आम तौर पर किसी तालिका की संपूर्ण सामग्री को हटाने के लिए DELETE से अधिक कुशल विधि TRUNCATE बनाता है।

+2

यदि वह ** पूर्ण रिकवरी मॉडल ** का उपयोग कर रहा है, तो वह डिलीट कमांड जारी होने से पहले इस समय डेटाबेस को वापस कर सकता है। –

3

आप इस मामले में रोलबैक नहीं कर सकते हैं, लेकिन जब आप पूर्ण रिकवरी मॉडल का उपयोग कर रहे हैं, तो आप डिलीट कमांड जारी करने से पहले अपने डेटाबेस को इस समय वापस कर सकते हैं।

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