2011-01-14 9 views
15

SQL सर्वर प्रबंधन स्टूडियो में, मैंने नीचे दी गई क्वेरी की।
दुर्भाग्यवश, मैं WHERE खंड को अपूर्ण करना भूल गया।
1647 पंक्तियों को 4 के बजाय अपडेट किया गया था।SQL सर्वर अद्यतन क्वेरी को पूर्ववत कैसे करें?

मैं अंतिम विवरण कैसे पूर्ववत कर सकता हूं?

दुर्भाग्यवश, मैंने केवल उन 1647 पंक्तियों का अनुवाद करना समाप्त कर दिया है और अंतिम सुधार कर रहे हैं, और इस प्रकार बैकअप नहीं है।

UPDATE [dbo].[T_Language] 
    SET 
     [LANG_DE] = 'Mietvertrag' --<LANG_DE, varchar(255),> 
     ,[LANG_FR] = 'Contrat de bail' -- <LANG_FR, varchar(255),> 
     ,[LANG_IT] = 'Contratto di locazione' -- <LANG_IT, varchar(255),>  
     ,[LANG_EN] = 'Tenancy agreement' -- <LANG_EN, varchar(255),> 
     --WHERE [LANG_DE] like 'Mietvertrag' 

एक लेनदेन प्रोटोकॉल है, कम से कम मुझे उम्मीद है।

+0

क्या आपने कभी बैकअप लिया है? आपका वसूली मॉडल क्या सेट है? –

+0

रिकवरी मॉडल? ;-) –

+1

ओह भगवान का शुक्र है, मेरे पास आज दोपहर से स्वचालित बैकअप है। –

उत्तर

9

एक गैर प्रतिबद्ध लेनदेन आदेश जारी करके वापस लौटाया जा सकता ROLLBACK

लेकिन अगर आप में चल रहे हैं स्वतः-मोड कुछ भी नहीं आप कुछ नहीं कर सकता है ....

+3

सच नहीं है - समय वसूली में बिंदु ओपी के वसूली मॉडल पर निर्भर लेनदेन लॉग के माध्यम से उपलब्ध हो सकता है और क्या उन्होंने कभी बैकअप लिया है। –

+0

ठीक है, लेकिन "सादे" एसक्यूएल के साथ नहीं, है ना? –

+0

सहमत हुए, टिप्पणियों को देखते हुए लगता है कि ओपी भाग्यशाली था! –

0

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

फिर आप अपडेट को पूर्व-अपडेट की समीक्षा कर सकते हैं और अपडेट करने के लिए SQL स्क्रिप्ट लिख सकते हैं।

+0

यह आवश्यक नहीं होगा, मुझे एहसास हुआ, मैंने 2 घंटे पहले अपडेट-स्क्रिप्ट बनाई थी (हालांकि इसे सहेजा नहीं था, और इसे छोड़ना चाहता था - सौभाग्य से अभी तक ऐसा नहीं किया गया था।)। मैंने सभी मानों को अपडेट किया है, और केवल 4 बदलाव किए हैं (जो मुझे याद है), इसलिए मैंने 5 मिनट से अधिक काम नहीं खोला है। वाह, मैं एक भाग्यशाली लड़का का नरक हूँ ... –

4

यह मानते हुए कि आपके पास पहले से पूर्ण बैकअप है, मैं बस उस बैकअप को अलग डेटाबेस में पुनर्स्थापित कर दूंगा और वहां से डेटा माइग्रेट कर दूंगा।

अपने डेटा तो क्या आप सभी डेटा कि जिस तरह से ठीक हो, लेकिन आप ठीक करने के लिए है कि लेनदेन लॉग पढ़कर कोशिश कर सकते हैं नवीनतम बैकअप के बाद बदल गया है।

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

आप बी सी सी लॉग, fn_log कार्यों के साथ या तीसरे पक्ष लॉग रीडर के साथ करके देख सकते हैं इस तरह के रूप ApexSQL Log

दुर्भाग्य से वहाँ कोई आसान तरीका है क्योंकि एमएस इस और दुकानों के लिए दस्तावेज़ प्रदान नहीं करता लेनदेन लॉग पढ़ने के लिए है अपने मालिकाना प्रारूप में डेटा।

4

यदि आपके पास पहले से ही आपके डेटाबेस से पूर्ण बैकअप है, सौभाग्य से, आपके पास SQL ​​प्रबंधन स्टूडियो में एक विकल्प है। इस मामले में, आप निम्न चरणों का उपयोग कर सकते हैं:

  1. सही डेटाबेस पर क्लिक करें -> कार्य -> ​​पुनर्स्थापित -> डेटाबेस।

  2. सामान्य टैब में, समय पर क्लिक करें -> विशिष्ट दिनांक और समय विकल्प चुनें।

  3. से पहले अद्यतन आदेश समय पर समय स्लाइडर स्थानांतरित -> ठीक क्लिक करें।

  4. गंतव्य डेटाबेस नाम में, एक नया नाम टाइप करें।

  5. फ़ाइलें टैब में, फ़ोल्डर में सभी फ़ाइलों को पुनः आवंटित में जाँच करें और फिर अपने बरामद डेटाबेस को बचाने के लिए एक नया पथ का चयन करें।

  6. विकल्प टैब में, ओवरराइट करें ... और हटाएं पूंछ-लॉग ले लो ... चेक विकल्प।

  7. अंत में, ठीक पर क्लिक करें और पुनर्प्राप्ति प्रक्रिया खत्म होने तक प्रतीक्षा करें।

मैंने इस विधि को एक परिचालन डेटाबेस में स्वयं उपयोग किया है और यह बहुत उपयोगी था।

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