SQL Server 2008 से 2005 तक अपग्रेड करना


32

SQL 2008 का उपयोग करके बनाए गए डेटाबेस फ़ाइलें 2005 के साथ संगत नहीं हैं। क्या कोई काम है?


सर्वर लॉगिन को निर्यात करना भी न भूलें।
स्टेनली जॉन्स

यह इसलिए है क्योंकि आप 2008 में विकसित कर रहे हैं लेकिन आपके उत्पादन सर्वर अभी भी 2005 हैं? आपके द्वारा प्रदान किया जाने वाला कोई भी समाधान आपके जीवन को दुखी करने के साथ ही अपरिहार्य रूप से विलंबित करने वाला है, क्योंकि आप नियमित रूप से इन डाउनग्रेडों को करने की संभावना रखेंगे।
डेटागोड

जवाबों:


16

कोई 3 पार्टी उपकरण आवश्यक नहीं। SQL सर्वर 2008 प्रबंधन स्टूडियो ने हमें डेटाबेस को डाउन-कन्वर्ट करने के लिए एक बहुत शक्तिशाली उपकरण दिया क्योंकि उन्होंने "स्क्रिप्ट डेटाबेस" विज़ार्ड में "स्क्रिप्ट डेटा" विकल्प जोड़ा था।

बस SQL2008 SSMS में DB पर राइट-क्लिक करें, और कार्य पर जाएं, फिर "स्क्रिप्ट्स उत्पन्न करें"

विज़ार्ड के माध्यम से चलो, तालिका / दृश्य विकल्पों के तहत "स्क्रिप्ट डेटा" के लिए "सही" चुना जाना सुनिश्चित करें। सभी ऑब्जेक्ट चुनें, फिर उस स्क्रिप्ट को चलाएं जो 2005 सर्वर पर बनाता है। (कृपया ध्यान रखें कि बनाई गई स्क्रिप्ट बड़े पैमाने पर हो सकती है यदि मूल डेटाबेस बहुत बड़ा है!)

ध्यान दें कि आप SQL2005 डेटाबेस को SQL2000 में परिवर्तित करने के लिए SQL2005 सर्वर के खिलाफ विज़ार्ड भी चला सकते हैं (आपको अपने वर्कस्टेशन पर स्थापित 2008 टूल की आवश्यकता होगी)।


4
कोई अपराध नहीं है, लेकिन यह एक समाधान नहीं हो सकता है अगर डेटाबेस बड़ा है। उस तकनीक को कुछ लाखों पंक्तियों के साथ किसी भी तालिका पर आज़माएं (और एक कॉलम के डेटा प्रकार के रूप में varchar (अधिकतम) के बारे में सोचें) और यदि प्रबंधन स्टूडियो इस फ़ाइल को खोलने और पार्स करने में सक्षम होगा, तो आप खुश होंगे, लेकिन मैं यकीन है कि यह नहीं खुलेगा, यह दुर्घटना होगी। क्षमा करें, लेकिन यह समस्या का समाधान नहीं है, सिवाय इसके कि अगर db वास्तव में छोटा है।
मैरियन

3
ज़रूर, अगर db बहुत बड़ा है, तो बस डेटाबेस संरचना को स्क्रिप्ट करें, फिर डेटा को पुश करने के लिए अपनी पसंदीदा विधि (SSIS, BCP, आयात विज़ार्ड) का उपयोग करें।
ब्राडकास्ट

SSMS 11.0 में संरचना के साथ स्क्रिप्ट डेटा का कोई विकल्प नहीं है। i.imgur.com/SGkG8oZ.png
jcollum

ठीक है यह अब "तालिका के ऊपर डेटा के प्रकार" के तहत है। तालिका / दृश्य विकल्प के ऊपर
jcollum

16

आप डेटा को एक SQL सर्वर उदाहरण से दूसरे उदाहरण में BCP कर सकते हैं। यह डेटा को एक संस्करण से दूसरे संस्करण में कॉपी करने का सबसे तेज़ तरीका होगा। डेटा की मात्रा के आधार पर, इसमें लंबा समय लग सकता है।


2
डेटा की मात्रा पर निर्भर करता है यह लगभग हमेशा एक लंबा समय लगेगा
jcolebrand

हां, यह निश्चित है। बड़े डेटाबेस को SQL सर्वर के पुराने संस्करण में ले जाना आसान काम नहीं है।
मन्दिनी

2
BCP के लिए उल्टा यह है कि यह स्क्रिप्ट डेटा का उपयोग करने की तुलना में तेज़ होने वाला है। हां, यह धीमा है, लेकिन यह कई विकल्पों से तेज है।
यिर्मयाह पेश्का

15

कोई प्रत्यक्ष तरीका नहीं है, जिसे मैं 2008 के प्रारूप से 2008 के दुर्भाग्य से एक DB को डाउनग्रेड करने के लिए जानता हूं।

जिस तरह से मैंने अतीत में किया है (वास्तव में SQL सर्वर के पुराने संस्करणों के साथ, लेकिन प्रक्रिया समान होगी):

  1. यदि पहले से ही नहीं किया गया है तो SQL2008 उदाहरण पर DB को पुनर्स्थापित करें
  2. SQL2005 उदाहरण पर सही संरचना (तालिकाएँ, अनुक्रमणिका, बाधाएँ, दृश्य, procs, ट्रिगर, ...) के साथ एक रिक्त DB बनाएँ। उम्मीद है कि आप अपनी मौजूदा बिल्ड प्रक्रिया और / या स्रोत कोड से ऐसा कर सकते हैं, लेकिन यदि आप 2005 के DB में सब कुछ के लिए स्क्रिप्ट बनाने के लिए SQL सर्वर प्रबंधक का उपयोग नहीं कर सकते हैं और परिणाम को 2008 के उदाहरण में रिक्त एक पर चला सकते हैं।
  3. सुनिश्चित करें कि दोनों उदाहरण एक-दूसरे को देख सकते हैं (यानी यदि इंस्टेंसेस अलग-अलग मशीनों पर हैं तो फायरवॉल ब्लॉक नहीं हैं) और उन्हें sp_addlinkedserver का उपयोग करके लिंक करें ।
  4. सभी डेटा को एक DB से दूसरे तक कॉपी करें। यदि कोई विदेशी कुंजी बाधाएं नहीं हैं और आपको चिंता करने के लिए ट्रिगर्स में इसी तरह के मुद्दे हैं, तो बस डीबी को एक साथ जोड़ सकते हैं और तालिकाओं की सूची के माध्यम से कर्सर कर सकते हैं (उन्हें sys.objects से चुनकर) और चल रहे हैं
    INSERT destinationserver.destinationdb.schema.table SELECT * FROM sourcedb.schema.table
    (या INSERT schema.table SELECT * FROM sourceserver.sourcedb.schema.tableयदि आपने ऐसे उदाहरणों को लिंक किया है जो चारों ओर हैं )
    प्रत्येक तालिका के लिए। यदि आपके पास अवरोधों को लागू करने वाली अंतर-तालिका स्थिरता है और ट्रिगर आपको निश्चित रूप से इन कार्यों के आदेश के बारे में थोड़ा और अधिक चतुर होने की आवश्यकता होगी, खासकर यदि आपके पास खुद पर आधारित एक बाधा के साथ एक मेज की तरह चक्रीय बाधाएं हैं (एक होल्डिंग पदानुक्रम डेटा, एक संभावित उदाहरण के रूप में)।

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

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


1
-1 क्योंकि यह वास्तव में बीसीपी की पसंद की तुलना में अक्षम (चयन में से) है।
jcolebrand

@jcolebrand मेला दक्षता पर पर्याप्त है। हालांकि तकनीक वह है जो मैंने काम की है।
डेविड स्पिल्ट

यह एक उचित प्रणाली है, मैंने सोचा था कि मैं भविष्य के पाठकों के लिए यहां शामिल करूंगा। आप वर्तमान में यह एक मुद्दा नहीं होने के लिए upvotes मिल गया है। ;)
jcolebrand

7

मैंने समान स्थिति का सामना किया और SQL Server 2008 डेटाबेस से SQL Server 2005 के लिए स्क्रिप्ट स्कीमा और डेटा के लिए डेटाबेस प्रकाशन विज़ार्ड का उपयोग किया।

SQL सर्वर होस्टिंग वेब सेवा (और टूलकिट)

डेटाबेस प्रकाशन विज़ार्ड


1

आपको पहले डेटाबेस को स्क्रिप्ट करना होगा और उस संस्करण पर सुनिश्चित करना होगा जिसे आप उस प्रकार को निर्दिष्ट करते हैं जिसे आप ग्रेड से नीचे करना चाहते हैं। और डेटा को उच्च संस्करण से निचले संस्करण में कॉपी करने के लिए एसक्यूएल डेटा की तुलना आपके लिए ट्रिक करेगी।

सौभाग्य!

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