हमने हाल ही में Visual Studio Team System Database Edition उपयोग किया गया है, और मैं कहना है कि यह बहुत अच्छी तरह से काम किया है की है। सभी संग्रहीत प्रक्रियाओं को फाइलों के रूप में संग्रहीत किया जाता है, और स्रोत नियंत्रण में चेक आउट किया जाता है, और इसमें स्क्रिप्ट उत्पन्न करने के लिए उपकरण होते हैं, आदि
इसके अलावा, हमने पहले ही टेक्स्ट फ़ाइलों के रूप में संग्रहीत स्क्रिप्ट का उपयोग किया है, स्रोत नियंत्रण से बाहर। नियम यह था कि आपको फ़ाइल को देखना था, फिर इसे प्रबंधित करें, उदाहरण के लिए, प्रबंधन स्टूडियो, और इसे सेव करें, और इसे वापस जांचें। प्रत्येक संग्रहित प्रक्रिया स्क्रिप्ट फ़ाइल के शीर्ष पर यह मौजूदा संग्रहीत प्रोसेस को छोड़ देगा, और फिर एक नया निर्माण करने के लिए CREATE कथन का उपयोग करें (CREATE/ALTER समस्या के आसपास हो जाता है)। उसके बाद हमारे पास एक उपकरण था जो स्क्रैच से रिक्त डेटाबेस बनाने के लिए सही क्रम में सभी स्क्रिप्ट चलाएगा, और फिर हमने अपने मौजूदा डेटाबेस को अद्यतित करने के लिए स्क्रिप्ट उत्पन्न करने के लिए RedGate's SQL Compare उत्पाद का उपयोग किया था। मैं स्वीकार करता हूं कि यह थकाऊ था।
लगभग उसी समय मैंने लगभग 10 अन्य डेवलपर्स के साथ एक सिस्टम पर काम किया, और उन्होंने एक कठोर डेटाबेस परिवर्तन प्रबंधन प्रक्रिया लागू की। वहां कई सारे एप्लिकेशन थे जो सभी 2 या 3 डेटाबेस के सेट पर निर्भर थे। किसी भी समय डेटाबेस स्कीमा को बदलना पड़ता था (हम केवल टेबल, कॉलम और विचारों को ही बात कर रहे थे) तो एक दस्तावेज़ बनाया गया था जो परिवर्तन को समझाता था, और उसके बाद एक मैट्रिक्स था जो परिवर्तन बनाम सूचीबद्ध करता था। हमने कौन से अनुप्रयोगों को सोचा था । फिर दस्तावेज प्रसारित किया गया था और प्रत्येक आवेदन के लिए जिम्मेदार किसी व्यक्ति द्वारा इसकी समीक्षा की जानी चाहिए, और उन्हें कहीं भी प्रभावित होने के लिए अपने आवेदन के माध्यम से खोजना पड़ता था, आदि। यह एक लंबी कठिन प्रक्रिया थी, लेकिन यह काम करता था। हालांकि, संग्रहीत प्रोसेस को स्रोत नियंत्रण में टेक्स्ट फ़ाइलों के रूप में संग्रहीत किया गया था।
अधिक दूर अतीत में, छोटी परियोजनाओं है कि और अधिक डेटासंग्रह, हर बार एप्लिकेशन शुरू कर दिया के रूप में एक डाटाबेस के साथ डेस्कटॉप क्षुधा की तरह थे के साथ, मैं होगा:
- जांच करें कि डेटाबेस से ही अस्तित्व में देखने के लिए, और अगर नहीं, तो यह है कि सभी तालिकाओं अस्तित्व में
- चेक बनाते हैं, और यदि नहीं, तो उन्हें
- चेक, कि सभी स्तंभों अस्तित्व में बनाते हैं, और नहीं तो उन्हें
जोड़ने जब भी मैं करने की जरूरत स्कीमा को बदलें, मैं आवश्यकतानुसार स्कीमा को संशोधित करने के लिए स्टार्टअप कोड के अंत में अधिक कोड जोड़ूंगा, किसी मौजूदा डेटा को माइग्रेट करने के लिए देखभाल कर रहा हूं। इसका लाभ यह था कि आप सॉफ़्टवेयर के नए संस्करण को अनइंस्टॉल और पुनर्स्थापित कर सकते हैं, और यह स्वचालित रूप से मौजूदा डेटाबेस को नवीनतम संस्करण में अपग्रेड कर देगा। स्थापना, उन्नयन, और रखरखाव एक सपना था। हालांकि यह अधिक "एंटरप्राइज़" सिस्टम के लिए काम नहीं करेगा।
आप ADO.Net इकाइयों या Entity Spaces जैसे अन्य समान इकाई फ्रेमवर्क को अपनाने से इन समस्याओं में से कुछ को कम कर सकते हैं। ये ऑब्जेक्ट-रिलेशनल मैपिंग परतें हैं। वे प्रत्येक डेटाबेस के लिए गुणों सहित आपके डेटाबेस में प्रत्येक इकाई (तालिका) के लिए कक्षाएं स्वत: उत्पन्न करते हैं। फिर वे आपको उन वर्गों को कस्टम तर्क के साथ विस्तारित करने की अनुमति देते हैं। यदि आप संग्रहीत प्रक्रियाओं में अपना व्यावसायिक तर्क रखने से दूर हो सकते हैं, और उन्हें इकाई कक्षाओं में डाल सकते हैं, तो लाभ यह है कि वे दृढ़ता से टाइप किए जाते हैं। इसलिए यदि आप किसी कॉलम का नाम बदलते हैं, या कॉलम हटाते हैं और आप अपनी इकाई कक्षाओं को पुन: उत्पन्न करते हैं, तो आपका आईडीई या कंपाइलर स्वचालित रूप से उन सभी स्थानों को ध्वजांकित करेगा जहां कोड टूटा हुआ है। जाहिर है, सभी इकाई कोड स्वाभाविक रूप से स्रोत नियंत्रण में आपके शेष स्रोत कोड के साथ भी हैं।
यह एक बड़ी समस्या है, मैंने बहुत समय से पूछा है, लेकिन अभी तक कोई अच्छा जवाब नहीं है, केवल एक ही जवाब परिचालन प्रक्रियाओं के माध्यम से समन्वयित प्रतीत होता है। – tekBlues
हमने इस कारण से http://tessik.com/sqlhistorian बनाया है: डीबी पर पहले से किए गए कार्यों के खिलाफ अपने संस्करण नियंत्रण को अद्यतन करने के लिए एक देव पर भरोसा करना व्यर्थता में एक अभ्यास है। एक बार जब कोई अतिरिक्त उपयोगकर्ता इंटरैक्शन के बिना टी-एसक्यूएल सर्वर हिट करता है तो हमारी प्रणाली स्वचालित रूप से स्रोत नियंत्रण में परिवर्तन रिकॉर्ड करती है। –
कई कंपनियां ** ** डेवलपर्स को स्क्रिप्ट को सीधे उत्पादन में लागू करने की अनुमति नहीं देती हैं, इसलिए मेरा मानना है कि सबसे अच्छा परिदृश्य (डीबीए) को स्क्रिप्ट से डेटाबेस में ** अपडेट करने की अनुमति देना है ** और दूसरी तरफ नहीं। हालांकि, वास्तविक दुनिया में यह संभव है कि कोई व्यक्ति सही ढंग से परिवर्तन प्रक्रियाओं का पालन न करे, इसलिए ** सबसे अच्छा बोली लगाने की तुलना करने की अनुमति देना है। इस मुफ्त टूल को आज़माएं: ** [http://servantt.com] (http://servantt.com/?so) - यह आपको अपनी ऑब्जेक्ट्स को रिवर्स करने, स्क्रिप्ट पर सहेजने, स्क्रिप्ट पर डेटाबेस की तुलना करने, WinMerge लॉन्च करने की अनुमति देता है तुलना, अद्यतन स्क्रिप्ट या डेटाबेस में परिवर्तन लागू करें। – drizin