SQL सर्वर डेटाबेस बैकअप कम संस्करण पर पुनर्स्थापित करें


185

निम्न संस्करण SQL सर्वर पर एक उच्च संस्करण SQL सर्वर डेटाबेस बैकअप फ़ाइल को पुनर्स्थापित कैसे करें?

SQL Server 2008 R2 (10.50.1600) का उपयोग करते हुए , मैंने एक बैकअप फ़ाइल बनाई और अब मैं इसे अपने लाइव सर्वर के SQL Server 2008 (10.00.1600) पर पुनर्स्थापित करना चाहता हूं ।

जब मैंने SQL Server 2008 पर बैकअप को पुनर्स्थापित करने का प्रयास किया, तो यह एक त्रुटि देता है, Restore Failedक्योंकि:

डेटाबेस को 10.50.1600 संस्करण चलाने वाले सर्वर पर बैकअप दिया गया था। वह संस्करण इस सर्वर के साथ असंगत है, जो संस्करण 10.00.1600 चला रहा है।

मैं इस सर्वर पर बैकअप फ़ाइल को कैसे पुनर्स्थापित करूं?


2
आप ऐसा नहीं कर सकते - यह संभव नहीं है। एसक्यूएल सर्वर * पदावनति "एक कम एक के लिए एक उच्च संस्करण से एक डेटाबेस की अनुमति नहीं है।
marc_s

18
Microsoft SQL सर्वर के बारे में सब कुछ जानता है (क्योंकि उन्होंने इसे बनाया है) और अभी तक 2 संस्करणों के बीच डेटा स्थानांतरित करना असंभव है। मुझे आसानी से समझ में नहीं आ रहा है कि निर्यात में किसी प्रकार की संगतता मोड क्यों उपलब्ध नहीं है। यह कितना कठिन हो सकता है?
DVMn

1
@dvdmn किसी भी टॉप गियर एपिसोड जितना कठिन है, जहां वे कहते हैं कि - विभिन्न प्रकार, अलग-अलग कथन, विभिन्न ब्लॉक लेआउट। डेटाबेस के बीच डेटा ले जाना बहुत आसान है, इससे कोई फर्क नहीं पड़ता कि संस्करण शामिल हैं। डाउनग्रेडिंग हालांकि नहीं है
पनगीओटीस कानावोस

2
@PanagiotisKanavos मैं असहमत हूं, mysql में आप db को sql कमांड के रूप में निर्यात कर सकते हैं और आप इसे mysql (नीचे या ऊपर) के किसी भी संस्करण पर पुनर्स्थापित कर सकते हैं। हाँ, आप sql db को स्क्रिप्ट के रूप में भी निर्यात कर सकते हैं, लेकिन इसे पुनर्स्थापित करना आसान नहीं है यदि आपके पास कुछ संग्रहीत फ़ंक्शन / प्रक्रियाएं हैं जो एक दूसरे पर निर्भर करती हैं। यह मूल रूप से उपयोगी / समाधान नहीं है।
डीवीएमएन

3
@dvdmn एक डेटाबेस की स्क्रिप्ट का निर्यात बैकअप से पूरी तरह से अलग है। मुझे लगता है कि कुछ उत्पाद बैकअप की पेशकश नहीं करते हैं / कार्यक्षमता को बहाल करते हैं या बदतर होते हैं, दो अवधारणाओं को मसल देते हैं। यह अक्सर ऐतिहासिक कारणों से होता है: अतीत में बैकअप की कमी, कुछ उत्पादों को उस नाम से निर्यात / स्क्रिप्टिंग कहा जाता है। अब जब वे करते हैं , तो उन्हें भौतिक और तार्किक बैकअप के बारे में बात करके, शब्द संघर्ष को हल करना पड़ता है, फिर जब स्क्रिप्टिंग के बारे में बात करते हैं तो मिश्रित हो जाते हैं
पनगीओटीस कानावोस

जवाबों:


78

नहीं, डेटाबेस को डाउनग्रेड करना संभव नहीं है। 10.50.1600 SQL Server 2008 R2 संस्करण है। इस डेटाबेस को SQL सर्वर 2008 में पुनर्स्थापित या अटैच करने का कोई तरीका नहीं है, जिस पर आप पुनर्स्थापित करना चाह रहे हैं (10.00.1600 SQL Server 2008)। आपके एकमात्र विकल्प हैं:

  • इस उदाहरण को SQL Server 2008 R2 या में अपग्रेड करें
  • SQL Server 2008 R2 आवृत्ति पर आपके पास बैकअप पुनर्स्थापित करें, सभी डेटा निर्यात करें और SQL Server 2008 डेटाबेस पर आयात करें।

मैं अनुमति प्रतिबंधों के कारण क्लाइंट लाइव सर्वर को अपग्रेड नहीं कर सकता। और मेरे डेटाबेस का आकार 2.5GB से अधिक है, इसलिए मैं मेमोरी अपवाद त्रुटि के कारण डेटा स्क्रिप्ट नहीं बना सका।

9
@ गौरव डेटा को स्क्रिप्ट न करें - इसके बजाय, डेटा के बिना पूरे डेटाबेस (टेबल्स, प्रॉपर, ट्रिगर, अड़चन आदि) को स्क्रिप्ट करें, नया डेटाबेस बनाएं, फिर स्रोत डेटाबेस पर राइट क्लिक करें, "टूल" पर जाएं, फिर "डेटा निर्यात करें" अपने डेटाबेस में तालिकाओं की सामग्री को स्थानांतरित करने के लिए।
जिम मैकलियोड

17
मुझे एक पैट उत्तर के बारे में बहुत संदेह है "कोई संभावित रास्ता नहीं है" - इसका मतलब है कि आपने अभी तक रास्ता नहीं ढूंढा है। ऐसा करने के लिए कई कारण हो सकते हैं, इसलिए यह एक उपयोगी उत्तर नहीं है।
Jay Imerman

6
मैं असहमत हूं, @ जय, कभी-कभी "आप नहीं कर सकते" एकदम सही जवाब है, हालांकि यह जहां उपलब्ध है वहां वर्कअराउंड पेश करने के लिए अधिक उपयोगी है।
रसेल फॉक्स

1
@ झांग यदि आपके कोई प्रश्न हैं, तो उन्हें प्रश्न के रूप में पूछें, टिप्पणी के रूप में नहीं।
रेमस रूसन

83

आप एक्सपोर्ट डेटा-टियर एप्लिकेशन नामक कार्यक्षमता का उपयोग कर सकते हैं जो .bacpacडेटाबेस स्कीमा और डेटा से युक्त फ़ाइल उत्पन्न करता है ।

गंतव्य सर्वर पर, आप आयात डेटा-स्तरीय अनुप्रयोग विकल्प का उपयोग कर सकते हैं जो पूर्व-निर्मित .bacpacफ़ाइल से नया डेटाबेस बनाता है और पॉप्युलेट करता है

यदि आप केवल डेटाबेस स्कीमा को स्थानांतरित करना चाहते हैं, तो आप फ़ाइल बनाने के लिए एक्स्ट्रेक्ट डेटा-टीयर एप्लिकेशन का उपयोग कर सकते हैं और बनाए गए डेटाबेस स्कीमा को तैनात करने के लिए डेटा-टीयर एप्लिकेशन को तैनात कर सकते हैं।

मैंने इस प्रक्रिया को SQL Server के विभिन्न संस्करणों पर SQL 2014 से SQL 2012 और SQL 2014 से SQL 2008R2 तक और अच्छी तरह से काम किया है।


8
यह एक उत्तर है जो अधिक ध्यान देने योग्य है। यह वास्तव में ज्यादातर मामलों के लिए जस्ट वर्क करता है। यदि आपके पास SQL ​​उपयोगकर्ता हैं जो अनाथ हैं, हालांकि, निर्यात कार्रवाई विफल हो जाएगी। आप अन्यथा उन बिट्स को मैन्युअल रूप से निकाल सकते हैं / जोड़ सकते हैं अन्यथा SQL संस्करणों को स्थानांतरित कर सकते हैं।
डॉक्टर ब्लू

3
मैंने बस यही कोशिश की, मेरे MSSQLEX2012 (V11) पर MSSQLEX2014 (V12) पर बना एक DB बनाने के लिए। मुझे बस एक "Microsoft.Data.Tools.Schema.Sql.Sql120DatabaseSchemaProvider मान्य नहीं है" इसे बदलने का कोई तरीका नहीं है।
क्रेग

5
.Bakpac DOES कार्य का उपयोग करते हुए SQL Server 2014 से 2012 तक आयात किया जाता है, लेकिन इसके लिए SSMS के सही संस्करण की आवश्यकता होती है। उदाहरण के लिए, मैं SSMS 2016 CTP3 का उपयोग करता हूं और यह त्रुटिपूर्ण काम करता है। यह SSMS 2012 का उपयोग करके मेरे लिए काम नहीं किया। मैंने SSMS 2014 का परीक्षण नहीं किया है।
ग्रेग गम

1
किसी को पता है कि क्या कोई टी-एसक्यूएल में इस प्रक्रिया को स्क्रिप्ट कर सकता है ? UPDATE (थोड़ी गुगली के बाद खुद को जवाब देना): आप इसे sqlpackage.exeकमांड लाइन के माध्यम से स्वचालित कर सकते हैं । अधिक के लिए Google।
एलेक्स

1
यह एकमात्र समाधान है जिसने SQL2016 के लिए काफी बड़े / जटिल SQL2017 को अपग्रेड करने के लिए मेरे लिए काम किया। प्रदर्शन भी बहुत अच्छा रहा।
कीथ

35

जरूरी काम नहीं होगा

काम करेगा

  • स्क्रिप्ट पीढ़ी - कार्य -> लिपियों का सृजन । सुनिश्चित करें कि आपने सेट स्क्रिप्टिंग विकल्प -> उन्नत पृष्ठ पर वांछित लक्ष्य SQL सर्वर संस्करण निर्धारित किया है । आप वहाँ भी चुन सकते हैं कि स्कीमा, डेटा या दोनों की प्रतिलिपि बनाएँ या नहीं। ध्यान दें कि जनरेटेड स्क्रिप्ट में, आपको mdf / ldf फ़ाइलों के लिए DATA फ़ोल्डर को बदलने की आवश्यकता हो सकती है यदि गैर-एक्सप्रेस से एक्सप्रेस या इसके विपरीत जा रहा हो।

  • Microsoft SQL Server डेटाबेस प्रकाशन सेवाएँ - SQL Server 2005 और इसके बाद के संस्करण के साथ आता है, मुझे लगता है। नवीनतम संस्करण यहाँ से डाउनलोड करें । आवश्यक शर्तें: sqlncli.msi/ sqlncli_x64.msi/ sqlncli_ia64.msi, SQLServer2005_XMO.msi/ SQLServer2005_XMO_x64.msi/ SQLServer2005_XMO_ia64.msi( यहां डाउनलोड करें )।


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

नीचे दोनों लिंक 404 हैं।
SANƒошӽа

29

इसे पूरा करने के लिए विभिन्न विकल्पों पर मेरे 2 सेंट हैं:

थर्ड पार्टी टूल्स : संभवत: काम पाने का सबसे आसान तरीका है कि लोअर वर्जन पर एक खाली डेटाबेस बनाया जाए और फिर बैकअप को पढ़ने और बैकअप के साथ नए नए बनाए गए डेटाबेस को सिंक्रोनाइज़ करने के लिए थर्ड पार्टी टूल्स का उपयोग किया जाए।

लाल फाटक सबसे लोकप्रिय में से एक है लेकिन वहाँ की तरह कई अन्य ApexSQL Diff , ApexSQL डाटा Diff , निपुण एसक्यूएल , Idera ...। ये सभी प्रीमियम उपकरण हैं, लेकिन आप परीक्षण मोड में काम कर सकते हैं;)

स्क्रिप्टिंग बनाना : जैसा कि अन्य लोग पहले ही उल्लेख कर चुके हैं कि आप हमेशा SSMS का उपयोग करके स्क्रिप्ट संरचना और डेटा बना सकते हैं, लेकिन आपको निष्पादन के आदेश को ध्यान में रखना होगा। डिफ़ॉल्ट ऑब्जेक्ट स्क्रिप्ट द्वारा सही तरीके से ऑर्डर नहीं किया जाता है और आपको निर्भरता का ध्यान रखना होगा। यह एक मुद्दा हो सकता है यदि डेटाबेस बड़ा है और इसमें बहुत सारी वस्तुएं हैं।

आयात और निर्यात विज़ार्ड : यह एक आदर्श समाधान नहीं है क्योंकि यह सभी ऑब्जेक्ट्स को पुनर्स्थापित नहीं करेगा, लेकिन केवल डेटा टेबल लेकिन आप इसे आवश्यक होने पर त्वरित और गंदे सुधारों के लिए विचार कर सकते हैं।


1
Red Gate Sql Clone SQL सर्वर के विभिन्न संस्करण के बीच क्लोनिंग का समर्थन नहीं करता है, वास्तव में उसी त्रुटि की रिपोर्ट करता है जो मुझे मैन्युअल रूप से करने की कोशिश करते समय मिलती है।
डार्कडेनी

29

आप ऊपरी संस्करण में बनाए गए डेटाबेस (या संलग्न) को निचले संस्करण में पुनर्स्थापित नहीं कर सकते। एकमात्र तरीका सभी वस्तुओं के लिए एक स्क्रिप्ट बनाना और डेटाबेस उत्पन्न करने के लिए स्क्रिप्ट का उपयोग करना है।

यहां छवि विवरण दर्ज करें

चयन "स्कीमा और डेटा" - यदि आप बैकअप स्क्रिप्ट फ़ाइल में दोनों बातें रखना चाहता हूँ
चयन केवल स्कीमा - अगर केवल स्कीमा की जरूरत है।

यहां छवि विवरण दर्ज करें

हां, अब आपने क्रिएट स्क्रिप्ट विथ स्कीमा एंड डेटा ऑफ द डेटाबेस के साथ किया है।


16

ऐसा करने का एक और तरीका "कॉपी डेटाबेस" सुविधा का उपयोग करना है:

स्रोत डेटाबेस> "कार्य"> "कॉपी डेटाबेस" पर राइट क्लिक करके खोजें।

आप SQL सर्वर इंस्टेंस के निचले संस्करण के लिए डेटाबेस की प्रतिलिपि बना सकते हैं। यह मेरे लिए SQL Server 2008 R2 (SP1) - 10.50.2789.0 से Microsoft SQL Server 2008 (SP2) - 10.0.2798.0 के लिए काम किया


3
ध्यान दें कि यदि लक्ष्य SQL सर्वर एक्सप्रेस है तो यह काम नहीं करेगा "गंतव्य सर्वर SQL सर्वर 2005 या बाद में एक्सप्रेस उदाहरण नहीं हो सकता है।" social.msdn.microsoft.com/Forums/en-US/sqlgetstarted/thread/…
ओहद श्नाइडर

2
इस तरह से SQL Server 2012 से SQL Server 2008 के डेटाबेस को कॉपी करना भी संभव नहीं है।
ट्विंकल

1
कॉपी डेटाबेस है एक अलग / आपरेशन संलग्न
पानागिओटिस Kanavos

1
इस संकेत के लिए धन्यवाद! इससे मुझे बहुत मदद मिली। मैंने SQL 2008 R2 से SQL 2008 में डेटा की प्रतिलिपि बनाई।
dns_nx

8

आप यह कोशिश कर सकते हैं।

  1. SQL Server 2008 पर एक डेटाबेस बनाएँ।
  2. SQL Server R2 (या किसी भी उच्च संस्करण) से आयात डेटा सुविधा आयात डेटा का उपयोग करना।
  3. स्क्रिप्ट को सिंक्रनाइज़ करने के लिए "RedGate SQLCompare" का उपयोग करें।

6

टास्क पर जाएं-> स्क्रिप्ट जेनरेट करें ...

"स्क्रिप्ट के डेटा प्रकार" में उन्नत में इस स्क्रिप्ट को अपने निचले संस्करण में चलाने का प्रयास करें ।"Schema and data"


5
यह बहुत अच्छा समाधान है लेकिन बड़े डेटाबेस के साथ बहुत खराब काम करता है।
वेगसिज

5

यह सुंदर नहीं है, लेकिन यह है कि मैंने इसे कैसे प्रदान किया यह विकल्प आपके SQL 2008 R2 स्थापित पर स्थापित है।

1) SQL सर्वर 2008 R2 "कार्य" .. "राइट स्क्रिप्ट्स" को विज़ार्ड में राइट क्लिक करें, पहले चरण में पूरे डेटाबेस और ऑब्जेक्ट्स का चयन करें। "सेट स्क्रिप्टिंग विकल्प" चरण पर आपको एक बटन "उन्नत" देखना चाहिए, इसे चुनें और सुनिश्चित करें कि आप "स्क्रिप्ट फॉर सर्वर संस्करण" = SQL सर्वर 2008 "नहीं R2 संस्करण का चयन करें। यह एक महत्वपूर्ण कदम है, क्योंकि" डेटा आयात करें "" अपने आप में सभी प्राथमिक कुंजियों, स्थिरांक और किसी भी अन्य वस्तुओं को संग्रहीत प्रक्रियाओं की तरह नहीं लाता है। "

2) नई स्थापना या डेटाबेस उदाहरण SQL Express या SQL Server 2008 पर उत्पन्न SQL स्क्रिप्ट क्वेरी विंडो का उपयोग करके या सहेजे गए .sql स्क्रिप्ट का उपयोग करें और निष्पादित करें और आपको नया डेटाबेस देखना चाहिए।

3) अब नए डेटाबेस पर राइट क्लिक करें और "कार्य" .. "डेटा आयात करें" का चयन करें। स्रोत को R2 डेटाबेस और नए डेटाबेस के रूप में गंतव्य चुनें। "एक या अधिक तालिकाओं या विचारों से डेटा की प्रतिलिपि बनाएँ", सभी तालिकाओं का चयन करने के लिए शीर्ष चेकबॉक्स का चयन करें और फिर अगला कदम, पैकेज चलाएँ और आपको पुराने संस्करण पर सब कुछ होना चाहिए। यह 2005 के संस्करण में भी वापस जाने के लिए काम करना चाहिए। आशा है कि यह किसी को बाहर करने में मदद करता है।


हाय @motogeek, मेरे पास एक ही मुद्दा है, लेकिन मेरे पास उत्पादन सर्वर पर R2 और स्थानीय पर 2008 है, इस मामले में मैं आयात और निर्यात डेटा का उपयोग नहीं कर सकता। इसके लिए आदर्श समाधान क्या होगा?
अब्बास

2

आप छोटे तालिकाओं के लिए और अंदर BCP का उपयोग कर सकते हैं।

BCP OUT कमांड: -

BCP "SELECT *  FROM [Dinesh].[dbo].[Invoices]" QUERYOUT C:\av\Invoices1.txt -S MC0XENTC -T -c -r c:\error.csv

BCP इन कमांड: - Invoicescopy1 के लिए तालिका संरचना बनाएँ।

BCP [Dinesh].[dbo].[Invoicescopy1] IN C:\av\Invoices.txt -S MC0XENTC -T -c

0

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


उस उपकरण को SQL सर्वर डेटा माइग्रेशन सहायक के साथ बदल दिया गया है। देखें: stackoverflow.com/questions/46517060/…
ahwm

0

आपको सब कुछ स्थानांतरित करने के लिए SSMS में आयात / निर्यात जादूगरों का उपयोग करना होगा

बैकअप / रिस्टोर या डिटैच / अटैचमेंट का उपयोग करके कोई "डाउनग्रेड" संभव नहीं है। इसलिए आपको क्या करना है:

  1. नया SSMS / SQL संस्करण चलाने वाले सर्वर से डेटाबेस का बैकअप लें।
  2. "टास्क" मेनू का विस्तार करके (लक्ष्य डेटाबेस पर राइट-क्लिक करने के बाद) और "आयात डेटा" विकल्प का चयन करके उत्पन्न .bak फ़ाइल से डेटा आयात करें।

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