2008 के साथ बैकअप के लिए SQL सर्वर 2012 बैकवर्ड संगतता


14

मेरे पास SQL ​​Server 2008 के साथ कई ग्राहक हैं और यही मेरे सर्वर पर भी है। मैं ग्राहकों और अपने कार्यालय के बीच डेटाबेस को आगे और पीछे भेजने के लिए बैकअप फ़ाइलों का उपयोग करता हूं।

मैंने पढ़ा है कि जब आप SQL Server 2012 से बैकअप बनाते हैं तो 2008 की आवृत्ति पर इसे पुनर्स्थापित करने का कोई तरीका नहीं है। मैंने मान लिया कि संगतता स्तर इस समस्या का ध्यान रखेगा, लेकिन ऐसा नहीं है। इसलिए, मैं एक नुकसान में हूं कि कैसे अपग्रेड किया जाए। अपने सभी क्लाइंट को एक साथ अपग्रेड करने के अलावा, जो असंभव है, मैं ऐसा करने के लिए कोई साफ रास्ता नहीं सोच सकता।

मुझे क्लाइंट को डेटाबेस भेजने के साथ-साथ क्लाइंट से डेटाबेस प्राप्त करने की आवश्यकता है। यह SQL सर्वर पर मेरा पहला संस्करण अपग्रेड है, इसलिए मैं इस समस्या के लिए नया हूं। कैसे आगे बढ़ना है पर कोई विचार?


4
आपके पास SQL ​​Server 2008 के एक उदाहरण और एक उदाहरण SQL सर्वर 2012 में एक ही समय में आपके सर्वर पर विभिन्न उदाहरण नामों के साथ स्थापित हो सकते हैं। शायद यह है कि विभिन्न संस्करणों पर ग्राहकों के साथ अपने मुद्दों को हल करेगा?
मिकेल एरिकसन

SO पर समान प्रश्न: stackoverflow.com/q/1744808/95710
DForck42

जवाबों:


16

यहां दो चीजें शामिल हैं: फ़ाइल का संस्करण नंबर, और संगतता स्तर। जब आप डेटाबेस को नए प्रमुख संस्करण से जोड़ते हैं (जैसे 2008 से 2008R2, या 2008R2 से 2012 तक) डेटाबेस संस्करण को स्थायी रूप से बदल दिया जाता है, और आप उस डेटाबेस को फिर से पुराने संस्करण में संलग्न नहीं कर सकते।

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

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


हाँ, मैं पहले भी यही समस्या थी। पूरे डेटाबेस की स्क्रिप्टिंग को समाप्त कर दिया और फिर सभी डेटा को स्क्रिप्ट करना। रेड गेट की एसक्यूएल तुलना और डेटा तुलना उस दिन बचाव में आए।
DForck42

@ DForck42: मेरे मामले में, DB डेटा के साथ स्क्रिप्ट करने के लिए बहुत बड़ा था, इसलिए मैंने स्कीमा को स्क्रिप्ट करना समाप्त कर दिया, फिर डेटा के साथ आगे बढ़ रहा था bcp
ivan_pozdeev

@ivan_pozdeev क्या आप कह रहे हैं कि आपने SQL Server 2012 BCP का उपयोग कर निर्यात किया है, और SQL Server 2008R2 BCP का उपयोग करके आयात किया गया है? फ़ाइल स्वरूपों को जानने के लिए महान रहें, धन्यवाद।
क्रिस

2
@Chris msdn.microsoft.com/en-us/library/ms162802.aspx "SQL Server 2014 में, bcp उपयोगिता SQL Server 2000, SQL Server 2005, SQL Server 2008, SQL Server 2008 R2 और के साथ संगत मूल डेटा फ़ाइलों का समर्थन करती है। SQL सर्वर 2012. "
ivan_pozdeev

धन्यवाद @ivan_posdeev, यह एक रहस्योद्घाटन किया गया है। मैंने किसी और की मदद करने के मामले में अपने कदम नीचे दर्ज किए हैं।
क्रिस

6

संगतता स्तर सेटिंग का उपयोग SQL सर्वर द्वारा यह निर्धारित करने के लिए किया जाता है कि कुछ नई सुविधाओं को कैसे संभाला जाना चाहिए। इस तरह एक DB अनुप्रयोग के साथ मुद्दों के बिना SQL के एक नए संस्करण में माइग्रेट किया जा सकता है। संगतता स्तर को आगे और पीछे बदला जा सकता है।

दुर्भाग्य से, बैकअप फ़ाइलें पीछे संगत नहीं हैं। एक तरीका यह होगा कि आप अपने पुराने DB संस्करण में अपने डेटा को अपने वर्तमान DB से बाहर ले जाने के लिए आयात / निर्यात का उपयोग करें।


3

SQL माइग्रेशन के लिए, मुक्त और खुले स्रोत SQL डेटाबेस माइग्रेशन विज़ार्ड का उपयोग करें।

मेरे पास 5 ~ 10 मिलियन रिकॉर्ड के साथ 5GB डेटाबेस था और जेनरेट स्क्रिप्ट के माध्यम से रूट की कोशिश की और sqlcmd.exe के साथ इसे चलाया। सबसे पहले, उत्पन्न स्क्रिप्ट हमेशा सही काम नहीं कर रही थी। दूसरे, sqlcmd.exe बड़ी फ़ाइलों पर भी विफल हो सकता है, उपलब्ध स्मृति के बारे में शिकायत कर रहा है। osql.exe काम करता है, लेकिन सिर्फ उम्र लेता है (और इसमें कमांड लाइन तर्क हैं)।

तब मैं SQL Azure डेटाबेस के लिए SQL सर्वर माइग्रेट करने के लिए एक अद्भुत उपकरण भर में आया था। यह SQL सर्वर के लिए SQL सर्वर के लिए भी काम करता है, उदाहरण के लिए यदि आप SQL 2012 डेटाबेस 2008 R2 के लिए माइग्रेट करना चाहते हैं। यह bcp.exe का उपयोग करता है, जो बल्क कॉपी का उपयोग करता है। वहाँ एक जीयूआई और कमांड लाइन (बैच) संस्करण उपलब्ध है और यह खुला स्रोत है। Http://sqlazuremw.codeplex.com/ देखें । मेरे मामले में, ऑपरेशन में 16 मिनट लगे।

एक उन्नत स्क्रीन में आप चुन सकते हैं कि आपका लक्ष्य SQL सर्वर है, न कि SQL Azure।


2

मैंने SQL सर्वर के पुराने संस्करण में डेटा प्राप्त करने और RDS के लिए डेटा खींचने के लिए BCP को कुछ उपकरणों से अधिक प्रभावी पाया है। (साभार @ivan_posdeev।)

मैं SQL सर्वर प्रबंधन स्टूडियो, कार्य, स्क्रिप्ट जनरेट में डेटाबेस पर राइट-क्लिक करके स्कीमा उत्पन्न करता हूं। सभी ऑब्जेक्ट्स को टिक करें, उन्नत ऑब्जेक्ट्स में यह सुनिश्चित करना कि आपकी ज़रूरत की हर चीज़ स्क्रिप्टेड (आँकड़े, अनुक्रमित आदि) होने वाली है, "गंतव्य डेटाबेस" का एक अलग नाम होने पर "USE डेटाबेस" को अनचेक करें, अपने गंतव्य डेटाबेस संस्करण के लिए अनुकूलता सेट करें और एक उत्पन्न करें फ़ाइल जो आपके स्कीमा बनाता है। अपने गंतव्य पर एक डेटाबेस बनाएं और उस पर इस फ़ाइल को चलाएं (उपयोग करते हुए osql, sqlcmdया जीयूआई)।

डेटा को स्थानांतरित करने के लिए, स्रोत डेटाबेस पर निम्न क्वेरी को दो बार चलाएं, डेटा निकालने के लिए बैच फ़ाइल बनाने के लिए पहले दूसरे कॉलम पर टिप्पणी करें, फिर अपने गंतव्य पर चलने के लिए आयात बैच फ़ाइल बनाने के लिए पहले कॉलम पर टिप्पणी करें। (आपको अपने स्रोत और गंतव्य सर्वर, उदाहरण के नाम, आउटपुट और इनपुट फ़ाइल निर्देशिका, उपयोगकर्ता नाम और पासवर्ड जोड़ने की आवश्यकता है। एकीकृत सुरक्षा का उपयोग करने के लिए विकल्पों और विकल्पों को बस के साथ बदलें ।)-U-P-T

यह यूनिकोड का समर्थन करता है, अगर आपको इसकी आवश्यकता नहीं है, तो -Nदोनों कथनों में स्विच को बदल दें -n

SELECT 
   'bcp SOURCEDATABASE.' + s.Name + '.' + t.NAME  + ' out d:\dbdump\' + s.Name + '.' + t.NAME  + '.dat -N -S SOURCESERVER\INSTANCE -UUSER -PPASSWORD'
--    'bcp DESTINATIONDATASE.' + s.Name + '.' + t.NAME  + ' in d:\dbdump\' + s.Name + '.' + t.NAME  + '.dat -N -S DESTINATIONSERVER\INSTANCE -UUSER -PPASSWORD -E -h TABLOCK -b 1000 -e d:\dbdump\' + s.Name + '.' + t.NAME  + '.ERRORS.dat'
FROM 
    sys.tables t
INNER JOIN      
    sys.indexes i ON t.OBJECT_ID = i.object_id
LEFT OUTER JOIN 
    sys.schemas s ON t.schema_id = s.schema_id
ORDER BY 
    s.Name, t.NAME

स्कीमा .ablename.ERRORS.dat नाम की चेक फ़ाइलों को चलाने के बाद - कोई भी पंक्तियाँ शामिल नहीं होंगी जो विफल रहीं, यदि कोई नहीं किया तो खाली।

यहाँ BCP के लिए MSDN संदर्भ , BCP विकल्पों के माध्यम से यहाँ अधिक अनुकूल चलना

मैंने स्क्रिप्ट बनाने के लिए यह बहुत बेहतर पाया है, और जो भी उपकरण मैंने कोशिश की है उनमें से कोई भी। यह RDS डेटाबेस पर भी चलता है (जो बैकअप की अनुमति नहीं देता है)। उत्पन्न डेटा फाइलें SQL स्क्रिप्ट का 30% आकार हैं, उन्हें चलाने में समय का एक हिस्सा लगता है, और बहुत अधिक विश्वसनीय है। (स्क्रिप्टिंग डेटा के लिए एसक्यूएल सर्वर द्वारा उत्पन्न स्क्रिप्ट हमेशा ऊपर उठाई जाती है, कभी-कभी अनुमानित रूप से कभी-कभी नहीं, एसक्यूएल उत्पन्न 2008R2 के साथ संगत नहीं थी (उदाहरण के लिए nvarchar(0), अक्सर उपयोग नहीं किए जाने योग्य कारण के लिए पूरा नहीं किया गया था, आदि) बीसीपी भी किसी भी बाधा उल्लंघन का दोहराव देता है। , जैसे संदर्भात्मक अखंडता।)।

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