SQL Server 2012 से 2008 तक डेटाबेस ले जाएँ


29

मेरे पास SQL ​​Sever 2012 उदाहरण पर एक डेटाबेस है जिसे मैं 2008 सर्वर पर कॉपी करना चाहूंगा। 2008 सर्वर 2012 सर्वर (मैंने कोशिश की है) द्वारा बनाए गए बैकअप को पुनर्स्थापित नहीं कर सकता।

2008 के संगत बैकअप बनाने के लिए मुझे 2012 में कोई विकल्प नहीं मिला। क्या मैं कुछ भूल रहा हूँ?

क्या स्कीमा और डेटा को संस्करण-अज्ञेय प्रारूप में निर्यात करने का एक आसान तरीका है जिसे मैं 2008 में आयात कर सकता हूं?

डेटाबेस किसी भी 2012 विशिष्ट सुविधाओं का उपयोग नहीं करता है। इसमें टेबल, डेटा और संग्रहीत कार्यविधियाँ शामिल हैं।

यहाँ मैंने अभी तक कोशिश की है

मैंने कार्य करने की कोशिश की → 2012 सर्वर पर लिपियों को उत्पन्न करें, और मैं एसक्यूएल स्क्रिप्ट के रूप में स्कीमा (संग्रहीत प्रक्रियाओं सहित) उत्पन्न करने में सक्षम था। हालांकि इसमें कोई भी डेटा शामिल नहीं था।

अपनी 2008 की मशीन पर उस स्कीमा को बनाने के बाद, मैं 2012 मशीन पर "निर्यात डेटा" विज़ार्ड खोलने में सक्षम था, और 2012 को स्रोत मशीन और 2008 को लक्ष्य मशीन के रूप में कॉन्फ़िगर करने के बाद, मुझे तालिकाओं की एक सूची के साथ प्रस्तुत किया गया था, जिसे मैं कॉपी कर सकता था। मैंने अपनी सभी तालिकाओं (300+) का चयन किया, और विज़ार्ड के माध्यम से क्लिक किया। दुर्भाग्य से यह अपनी स्क्रिप्ट बनाने में उम्र बिताता है, फिर "केवल पढ़ने के लिए कॉलम 'FOO_ID" में विफलता डालने जैसी त्रुटियों के साथ विफल रहता है।

मैंने "कॉपी डेटाबेस विजार्ड" की भी कोशिश की, जिसने दावा किया कि वह 2000 से "बाद में 2005 या बाद में" कॉपी करने में सक्षम है। इसके दो तरीके हैं:

  1. "डिटैच एंड अटैच", जो त्रुटि के साथ विफल हो गया:

    Message: Index was outside the bounds of the array.
    StackTrace:    at Microsoft.SqlServer.Management.Smo.PropertyBag.SetValue(Int32 index, Object value)
    ...
    at Microsoft.SqlServer.Management.Smo.DataFile.get_FileName()
    
  2. SQL प्रबंधन ऑब्जेक्ट विधि जो त्रुटि के साथ विफल रही

    संपत्ति को पढ़ नहीं सकते IsFileStream। यह गुण SQL Server 7.0 पर उपलब्ध नहीं है। "


क्या आप प्रत्यक्ष निर्यात करने में सक्षम हैं? मुझे नहीं पता कि आपका DB कितना बड़ा है, लेकिन छोटे डेटाबेस के साथ काम करने पर यही होता है।
डेव

2
SQL सर्वर का कोई भी पुराना संस्करण नए संस्करणों से बैकअप पुनर्स्थापित नहीं कर सकता है। यह डिजाइन द्वारा है। निर्यात सुविधा का उपयोग करें, तालिकाओं और डेटा को स्क्रिप्ट करें, और स्क्रिप्ट लक्ष्य को SQL 2008 पर सेट करें।

4
"यह पता लगाने की कोशिश कर रहा है कि उनके दाहिने दिमाग में कोई भी पीछे की ओर क्यों जाएगा।" - मेरे पास 2012 से चल रहा एक प्रोडक्शन सर्वर है, लेकिन मेरी देव मशीन में केवल 2008 है। मैं विकास की सहायता के लिए DB की एक स्थानीय प्रति चाहूंगा, लेकिन मैं अपने देव मशीन पर 2012 स्थापित नहीं करना चाहता क्योंकि मैंने नहीं किया है इतना खाली स्थान छोड़ दिया, और इसे स्थापित करने में घंटे खर्च नहीं करना चाहते। (इसलिए मैं घंटों के बजाय पीछे की ओर पलायन करने की कोशिश कर रहा हूं .... लेकिन यह सिर्फ मैं ही हूं।)
रिच

1
आप लगभग वहाँ हैं। आपके द्वारा निर्यात किया गया निर्यात अनुभाग में डेटा के साथ-साथ स्कीमा को शामिल करने का विकल्प होता है।

1
बस रामहाउंड के लिए जोड़ना चाहते थे: मैंने अपने देव पर्यावरण पर SQL 2008 R2 को SQL 2012 में अपग्रेड किया और फिर, मैंने अपने उन्नत उदाहरण में बहुत सारे स्कीमा और डेटा बदलने के बाद, महसूस किया कि VS 2010 SQL 2012 के साथ स्कीमा या डेटा की तुलना नहीं कर सकता है। वीएस 2010 और वीएस 2012 के लिए एसएसडीटी एसक्यूएल 2012 के साथ स्कीमा की तुलना कर सकते हैं लेकिन मूल वीएस 2010 डेटाबेस परियोजनाओं के साथ संगत नहीं हैं, और डेटा की तुलना नहीं कर सकते हैं। छोटी कहानी, मैं एसक्यूएल 2008 आर 2 पर वापस जाऊंगा और 2012 तक आगे बढ़ने के लिए कंपनी के समझदारी से निर्णय लेने तक इंतजार करूंगा। लेकिन मैं अपना नया स्कीमा / डेटा बचाना चाहूंगा। AFAIK मैं अपने सही दिमाग में हूँ।
GFK

जवाबों:


40

2012 SQL प्रबंधन स्टूडियो में डेटाबेस पर राइट क्लिक करें, और "कार्य -> ​​स्क्रिप्ट बनाएँ" चुनें। स्वागत स्क्रीन पर क्लिक करें, "स्क्रिप्ट पूरे डेटाबेस और सभी डेटाबेस ऑब्जेक्ट्स" चुनें। "निर्दिष्ट करें कि स्क्रिप्ट को कैसे सहेजा जाना चाहिए" पृष्ठ पर, "उन्नत" पर क्लिक करें। पॉप अप गुण पृष्ठ के अंतर्गत, "स्कीमा से डेटा के प्रकार" को "स्कीमा केवल" से "स्कीमा और डेटा" में, और "स्क्रिप्ट के लिए सर्वर संस्करण" को "2012" से "2008" में बदलें।

फिर मुझे इस विशाल एसक्यूएल फ़ाइल की शुरुआत को संपादित करने के लिए कुछ रास्ता खोजना था, डेटाबेस कैसे बनाया जाएगा, यह देखने के लिए - यह q देखें: https://stackoverflow.com/questions/102829/best-free-text-editor -supporting-अधिक-से-4GB-फ़ाइलें

और अंत में मुझे एसक्यूएल स्क्रिप्ट को चलाने के लिए कुछ रास्ता खोजना पड़ा, जो एसक्यूएल प्रबंधन स्टूडियो में खोलने के लिए बहुत बड़ा था - इस q को देखें: https://stackoverflow.com/questions/431913/how-do-you-run- एक-300MB-एमएस-एसक्यूएल-एसक्यूएल फ़ाइल


आपने फ़ाइल की शुरुआत में क्या ट्वीक किया था?
जॉनोआरआर

1
मुझे ठीक से याद नहीं है, क्षमा करें। ऐप विशिष्ट सामान, मुझे लगता है। शायद डेटाबेस का नाम या ऐसा कुछ। मुझे लगता है कि मैंने इसे यहां जोड़ा होता अगर यह समान समस्या वाले लोगों के लिए प्रासंगिक होता।
रिच

3
@JonoRR आप सबसे अधिक संभावना सृजन विवरण संपादित करना चाहते हैं और गंतव्य सर्वर पर जो कुछ भी समझ में आता है उसके लिए डेटाफ़ाइल पथ सेट करें।
इग्बी लार्गेमैन

12

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

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

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

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


1
आपने इस विज़ार्ड में 2008 R2 कहां सेट किया है?
योकोआरआर

बहुत बढ़िया टिप, मैंने एक्सप्रेस 2012 से वेब 2008 तक एक डेटाबेस को बहाल किया है। बहुत आसान है।
राकवानो

पुष्टि कर सकता है कि यह विज्ञापन के रूप में काम करता है। 2014-> 2012, क्रॉस डोमेन, स्थानीय SQL- सर्वर किया। इस टूल ने मेरी खोजों को इतने लंबे समय तक कैसे टाला है! नॉन-अज्योर उपयोग के लिए भी कमाल है।
गोमुशी

3

मैं SQL में नया हूँ, लेकिन मैं 2012 से 2008 तक प्रवास करने में सफल रहा। ऐसा करने के लिए मैंने SQL आयात और निर्यात उपयोगिता का उपयोग किया। मैंने SQL 2012 सर्वर और उस डेटाबेस को चुना जिसे मैं माइग्रेट करना चाहता हूं और आखिरकार 2008 सर्वर और गंतव्य के अपने डेटाबेस के रूप में एक नया डेटाबेस बनाया। इसने काम कर दिया।


2

APEXSQL उपकरण आज़माएं । उनके पास एक टूल है जो डेटाबेस को स्क्रिप्ट करेगा और डेटा को भी स्क्रिप्ट करेगा।


"$ 299 से" - क्या कोई मुफ्त विकल्प है?
अमीर

1

अपनी 2008 की मशीन पर उस स्कीमा को बनाने के बाद, मैं 2012 मशीन पर "निर्यात डेटा" विज़ार्ड खोलने में सक्षम था, और 2012 को स्रोत मशीन और 2008 को लक्ष्य मशीन के रूप में कॉन्फ़िगर करने के बाद, मुझे तालिकाओं की एक सूची के साथ प्रस्तुत किया गया था, जिसे मैं कॉपी कर सकता था। मैंने अपनी सभी तालिकाओं (300+) का चयन किया, और विज़ार्ड के माध्यम से क्लिक किया। दुर्भाग्य से यह अपनी स्क्रिप्ट बनाने में उम्र बिताता है, फिर "केवल पढ़ने के लिए कॉलम 'FOO_ID" में विफलता डालने जैसी त्रुटियों के साथ विफल रहता है।

समस्या यह है कि यह आईडी कॉलम डालने में सक्षम नहीं है, इसलिए:

  1. उन्हें टिक करके सभी तालिकाओं का चयन करें
  2. सभी तालिकाओं का चयन करें (ऐसा करने का तरीका पहले वाले पर क्लिक करें और शिफ्ट पकड़ें और अंतिम तालिका पर क्लिक करें)
  3. "एडिटिंग मैपिंग" पर क्लिक करें - आप देख सकते हैं कि बस अगले बटन के ऊपर और पूर्वावलोकन के बगल में है।
  4. आपको एक विंडो मिलेगी, "पहचान सम्मिलित करें सक्षम करें" पर टिक करें और फिर अगला क्लिक करें और आगे बढ़ें, यह काम करना चाहिए। इसने मेरे लिए काम किया।

1

मैंने रिच के समाधान का अनुसरण किया https://superuser.com/a/469597/312310 ऊपर! धन्यवाद - मैं यहाँ अभी तक वोट नहीं कर सकता!

काम करने के लिए मुझे जो अतिरिक्त कदम उठाने पड़े, वे हैं:

  • तार्किक फ़ाइल नाम बदलें और सुनिश्चित करें कि पथ सही है। मुझे उत्पन्न लॉग नाम को भी बदलना पड़ा, अन्यथा उसने लॉग के साथ mdf फ़ाइल को अधिलेखित करने की कोशिश की और फिर इस त्रुटि को फेंक दिया https://stackoverflow.com/questions/7534664/sql-server-script-error-database-is-is पहले से ही उपयोग में

    रचनात्मक DATABASE [xxxxx] PRIMARY (NAME = xxxxx ', FILENAME = N'C: \ Program Files \ Microsoft SQL Server \ MSSQL11.MSSQLSERVER \ MSSQL \ DATA \ xxxxx.df', SIZE = 14400KB, MAXSIZE = UNLIMITED, FILEGROWTH 1024KB) लॉग ऑन (NAME = N'xxxxxldf ', FILENAME = N'C: \ Program Files \ Microsoft SQL Server \ MSSQL11.MSSQLSERVER \ MSSQL \ DATA \ xxxxx_log_ldf', SIZE = 18560KB, MAXSIZE = 2048GB, FILEGROWTH = 10। %) चले जाओ

  • मुझे उत्पन्न अनुभाग पर टिप्पणी करनी थी और बाद में मैन्युअल रूप से उपयोगकर्ता अनुमतियों को जोड़ना था

    USE [xxxxx]
    GO
    /****** Object:  User [xxxxx]    Script Date: 30/11/2014 12:44:07 ******/
    CREATE USER [xxxxx] FOR LOGIN [xxxxx] WITH DEFAULT_SCHEMA=[dbo]
    GO
    sys.sp_addrolemember @rolename = N'db_owner', @membername = N'Umbraco'
    GO
    sys.sp_addrolemember @rolename = N'db_datareader', @membername = N'Umbraco'
    GO
    sys.sp_addrolemember @rolename = N'db_datawriter', @membername = N'Umbraco'
    GO
    

इसे चलाओ, और लो और निहारना मैं अब अपने वेब सर्वर के लिए अपने नए Umbraco 7.1.2 डेटाबेस को पुनर्स्थापित कर सकता हूं जिसमें केवल SQL Server 2008 R2 है!


0

XSQL स्कीमा तुलना और xSQL डेटा तुलना पर एक नज़र है । आप पहले स्कीमा की तुलना के साथ स्कीमा को सिंक्रनाइज़ कर सकते हैं और फिर डेटा की प्रतिलिपि बना सकते हैं।

अस्वीकरण: मैं xSQL के साथ संबद्ध हूं।

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