विभिन्न संस्करण / संस्करण की बैकअप फ़ाइल से डेटाबेस को पुनर्स्थापित करें


11

मैंने पढ़ा है कि जब तक आप पुराने संस्करण से एक नए संस्करण में पुनर्स्थापित कर रहे हैं, तब तक पीछे की संगतता कारणों से SQL सर्वर में डेटाबेस को पुनर्स्थापित करना संभव है।

क्या किसी को पता है कि यदि आप SQL सर्वर के विभिन्न संस्करणों के लिए * .bak फ़ाइल से डेटाबेस को पुनर्स्थापित कर सकते हैं? हम एफ़टीपी के माध्यम से एक बहुत बड़े डेटाबेस को स्थानांतरित कर रहे हैं जो कुछ दिन लेगा, इसलिए हम केवल एक बार ऐसा करेंगे। यदि कोई भी एफ़टीपी के माध्यम से डेटाबेस को स्थानांतरित करने तक प्रतिक्रिया करता है, तो हम स्पष्ट रूप से इसे आज़माएंगे और देखेंगे कि क्या यह परीक्षण से काम करता है, और अपने स्वयं के प्रश्न का उत्तर दें।

नीचे SQL सर्वर का संस्करण विवरण प्राप्त करने के लिए एक प्रश्न है। productversionप्रारूप में है {major revision}.{minor revision}.{release revision}.{build number}। मेरे मामले में, स्रोत के लिए और लक्ष्य {release revision}के 5500लिए एक मूल्य है 5512। ताकि ठीक लगे। हालाँकि, editionअलग है।

प्रश्न:

SELECT 
  SERVERPROPERTY('productversion'), 
  SERVERPROPERTY('productlevel'), 
  SERVERPROPERTY('edition')

स्रोत डेटाबेस:

10.0.5500.0
SP3
Developer Edition (64-bit)

लक्ष्य डेटाबेस:

10.0.5512.0
SP3
Enterprise Edition (64-bit)

SQL Server 2012 व्यवसाय इंटेलिजेंस संस्करण से एक डेवलपर उदाहरण में बैकअप फ़ाइल को पुनर्स्थापित करने के बारे में कैसे?
sdg320

जवाबों:


15

डेवलपर से एंटरप्राइज़ तक ठीक होगा, बस यह सुनिश्चित करें कि यदि आप प्रोसेसर लाइसेंस का उपयोग कर रहे हैं, तो आपके पास सभी सीपीयू को कवर करने के लिए लक्ष्य सर्वर पर लाइसेंस हैं। और यह सिर्फ उन्हें SQL से छिपाने के लिए पर्याप्त नहीं है, अगर वे भौतिक रूप से मशीन से जुड़े हैं, तो आप उनके लिए जिम्मेदार हैं।

इसके अलावा जब आप कम बिल्ड से उच्च बिल्ड पर जाते हैं तो आपका डेटाबेस संस्करण बढ़ जाएगा। कुछ परिदृश्य हैं जहां यह समस्याग्रस्त हो सकता है - जैसे कि यदि आप 2008 के विशिष्ट बिल्ड पर 15,000 विभाजन समर्थन का उपयोग कर रहे हैं तो यह तब काम नहीं करेगा जब आप 2008 R2 के विशिष्ट बिल्ड में अपग्रेड करते हैं। आप अनुकूलन पर भरोसा भी कर सकते हैं (और जगह में वर्कअराउंड हैं) जो वास्तव में एक पुराने बिल्ड में बग हैं, लेकिन नए बिल्ड में तय किए गए हैं, और इससे खराब प्रदर्शन हो सकता है। स्रोत पर उपयोग में किसी भी ट्रेस झंडे की समीक्षा करना और यह निर्धारित करना भी महत्वपूर्ण है कि क्या उन्हें गंतव्य पर सक्षम होना चाहिए। कभी भी नौकरी, लॉगिन आदि का ध्यान न रखें।

बेशक आप पीछे नहीं जा सकते। मैंने 10.0.5512 -> 10.0.5500 जैसे मामूली गिरावट की कोशिश नहीं की है, लेकिन सर्विस पैक या संस्करण में नीचे जाना संभव नहीं है। इसलिए यदि आपके पास अपने डेवलपर संस्करण उदाहरण पर 2012 डेटाबेस है और आप इसे अपने 2008 के उदाहरण में उत्पादन में रखना चाहते हैं, तो आपको अपना काम आपके लिए काट देना होगा ( यहां और यहां देखें ) - खासकर यदि आपने 2012 सुविधाओं का उपयोग किया है ।


लेकिन ऐसे अन्य मामलों को कवर करने के लिए जो लोगों को इस सवाल पर खींच सकते हैं (जैसे कोई डेवलपर से जाना चाहता है -> मानक या उद्यम -> एक्सप्रेस या आप क्या चाहते हैं) ...

अन्य संस्करण हैं -> संस्करण उन्नयन जो कि इतनी अच्छी तरह से नहीं चलेगा, जैसे कि डेवलपर -> एक्सप्रेस से यदि आपने कोई ऐसी विशेषताओं का उपयोग किया है जो एक्सप्रेस में समर्थित नहीं हैं (और वही एंटरप्राइज के अलावा किसी भी संस्करण के लिए जाता है)। सुविधाओं के कुछ उदाहरण आप डाउन-लेवल संस्करणों पर उपयोग नहीं कर पाएंगे (जिस स्थिति में पुनर्स्थापना उस बिंदु पर मर जाएगी, जो डेटाबेस ऑनलाइन लाने की कोशिश करता है):

  • विभाजन
  • डेटा कैप्चर बदलें
  • आधार - सामग्री संकोचन
  • पारदर्शी डेटा एन्क्रिप्शन

मुझे नहीं पता कि क्या कोई तरीका है सीधे इसे .BAK फ़ाइल से बताने के लिए (मुझे यकीन है कि कुछ जादू है जो पेज हेडर से कहीं निकाला जा सकता है, या यदि आपको एक हेक्स संपादक के साथ जलने के लिए सप्ताहांत मिल गया है) , लेकिन जब डेटाबेस अभी भी स्रोत उदाहरण पर बरकरार है, तो आप हमेशा यह देखने के लिए कर सकते हैं कि क्या आप SKU के कारण उपलब्ध किसी सुविधा का उपयोग कर रहे हैं:

SELECT feature_name FROM sys.dm_db_persisted_sku_features;

मुझे यकीन नहीं है कि यदि SQL सर्वर ऑडिट उस सूची में होना चाहिए - उस सुविधा का संस्करण विशिष्टता बदल गई है, तो यह संभवतः इस बात पर निर्भर करता है कि आप इसके साथ क्या कर रहे हैं। ऐसी अन्य चीजें हैं जो आप उपयोग कर रहे हैं, लेकिन DMV में नहीं दिखाएंगे (कुछ इसलिए कि वे आपके कोड में हैं, जो DMV पार्स नहीं करता है, और कुछ इसलिए कि आपका डेटाबेस SQL ​​सर्वर एजेंट जैसी बाहरी चीज़ों पर निर्भर है , सेवा ब्रोकर, आदि):

  • मिरर
  • प्रतिकृति के कुछ रूपों
  • लॉग शिपिंग
  • डेटाबेस स्नैपशॉट
  • ऑनलाइन अनुक्रमण
  • updateable वितरित विचारों को वितरित किया
  • बैकअप संपीड़न
  • नीति-आधारित प्रबंधन
  • योजना गाइड
  • डेटाबेस मेल
  • रखरखाव की योजना
  • पूरा पाठ खोजें

ऐसे मामले भी हैं जहां आप फ़ाइल आकार सीमाओं के कारण डेवलपर से एक्सप्रेस पर नहीं जा पाएंगे (एक्सप्रेस डेटाबेस कुल डेटा फ़ाइल आकार में 10GB तक सीमित हैं)।

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

  1. लक्ष्य संस्करण पर विभिन्न मेमोरी / सीपीयू सीमाएँ (या लक्ष्य पर अंतर्निहित ऑपरेटिंग सिस्टम)। यह बहुत से लोग हैं जो 2008 R2 एंटरप्राइज से 2012 एंटरप्राइज (CAL) में गए थे, जहां सेवा कृत्रिम रूप से पहले 20 कोर तक सीमित है)। यह सीधा प्रदर्शन अंतर पैदा कर सकता है (क्वेरी को संतुष्ट करने के लिए पर्याप्त मेमोरी नहीं, उदाहरण के लिए, या बहुत धीमी समानांतर क्वेरी प्रदर्शन); अधिक सूक्ष्म लोगों में योजना के विकल्प शामिल हैं जो विभिन्न अंतर्निहित हार्डवेयर के कारण बने हैं।
  2. स्रोत पर मेल खाते हुए अनुक्रमित दृश्य जैसी सुविधाओं पर रिलायंस, उपयोग करने के लिए स्रोत कोड को बदले बिना लक्ष्य पर स्वचालित रूप से सम्मानित नहीं किया जाएगा NOEXPAND। और आप शायद इस बात से भी वाकिफ नहीं होंगे कि यह क्षमता क्यों आपके प्रश्नों को अचानक धीमा कर देती है।
  3. समांतर इंडेक्स ऑपरेशंस के लिए जाता है और शायद अन्य अनुकूलन का एक धब्बा है जो इस क्षण को ध्यान में नहीं आ रहा है (शुक्र है कि मैं लगभग विशेष रूप से एंटरप्राइज स्पेस में काम करता हूं, इसलिए मुझे ज्यादातर मामलों में निचले संस्करणों की सीमाओं के बारे में चिंता करने की ज़रूरत नहीं है )।

इस डुप्लिकेट के आधार पर अद्यतन करें :

ऐसे मामले हो सकते हैं जहां आप एक डेटाबेस को एक निश्चित संस्करण से कम संस्करण (यहां तक ​​कि उसी संस्करण पर) को पुनर्स्थापित करने का प्रयास करते हैं, और आपको त्रुटियां मिलती हैं जो सहायक से कम हैं :

सर्वर 'सर्वर' उदाहरण के लिए पुनर्स्थापना विफल रही।
RESTORE डेटाबेस 'डेटाबेसन' शुरू नहीं कर सका।

यह बहुत सहज नहीं है। हालाँकि यदि आप SQL सर्वर के ईवेंट लॉग में अधिक गहरे दिखते हैं, तो आपको अधिक उपयोगी त्रुटियाँ (केवल एक उदाहरण) दिखाई देंगी:

डेटाबेस 'डेटाबेसेंसम' को शुरू नहीं किया जा सकता है क्योंकि SQL सर्वर के वर्तमान संस्करण में डेटाबेस की कुछ कार्यक्षमता उपलब्ध नहीं है।
डेटाबेस 'databasename' SQL सर्वर के इस संस्करण में शुरू नहीं किया जा सकता क्योंकि इसमें एक विभाजन फ़ंक्शन '_dta_pf__9987' है। SQL सर्वर का केवल एंटरप्राइज़ संस्करण विभाजन कार्यों का समर्थन करता है।

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

  1. SQL सर्वर के एक उपयुक्त संस्करण में पुनर्स्थापित करें - जिसका अर्थ होगा एक नया उदाहरण स्थापित करना या स्थापित करना।
  2. स्रोत सर्वर पर एक अलग नाम के साथ नए डेटाबेस के रूप में बैकअप को पुनर्स्थापित करें, किसी भी और सभी एंटरप्राइज़ सुविधाओं को हटा दें, फिर डेटाबेस को फिर से बैकअप लें, और कम संस्करण पर पुनर्स्थापित करें। (इस विशिष्ट मामले में, मैंने त्रुटि संदेश में विभाजन फ़ंक्शन का नाम छोड़ दिया, क्योंकि यह वैसे भी एक अस्वीकार्य बात लगती है - यह डेटाबेस इंजन ट्यूनिंग सलाहकार द्वारा बनाया गया था और ऐसा किसी ऐसे व्यक्ति द्वारा किया जा सकता है जो काफी नहीं था जानते हैं कि वे क्या कर रहे थे। यह हमेशा ऐसा नहीं होता है।)

स्रोत डेटाबेस पर विभाजन और अन्य सुविधाओं को हटाने और दूसरा बैकअप लेने के लिए (2) पर भिन्नता होगी। लेकिन अगर यह टूट नहीं है ...


3

डेवलपर और एंटरप्राइज एक ही सॉफ्टवेयर हैं, बस अलग-अलग लाइसेंसिंग समझौतों के साथ।

आपको अपने गंतव्य पर इस डेटाबेस को ठीक करना चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.