मैंने SQL स्रोत नियंत्रण (3.0) और एसक्यूएल तुलना (10.1) के नवीनतम संस्करणों में परिवर्तनों को दर्शाने के लिए नीचे अपना मूल पोस्ट अपडेट किया है।
चूंकि इस सवाल से एक साल पहले पूछा गया था, इसलिए मेरी प्रतिक्रिया आपके लिए सहायक नहीं हो सकती है, लेकिन वर्तमान में एसएससी का मूल्यांकन करने वाले अन्य लोगों के लिए, मैंने सोचा कि मैं अपने दो सेंट में फेंक दूंगा। हमने अभी एसक्यूएल सोर्स कंट्रोल (एसएससी) का उपयोग करना शुरू कर दिया है और कुल मिलाकर मैं अब तक काफी संतुष्ट हूं। हालांकि इसमें कुछ quirks है, खासकर यदि आप एक साझा डेटाबेस वातावरण में काम कर रहे हैं (स्थानीय रूप से काम कर रहे प्रत्येक डेवलपर के विपरीत) और विशेष रूप से एक विरासत पर्यावरण में काम कर रहे हैं जहां एक ही डेटाबेस में वस्तुओं को विकास टीमों के बीच खतरनाक रूप से विभाजित किया गया है।
हमारे संगठन में उत्पाद का उपयोग करने के तरीके के बारे में एक संक्षिप्त अवलोकन देने के लिए, हम एक साझा वातावरण में काम कर रहे हैं जहां हम सभी एक ही विकास डेटाबेस में परिवर्तन करते हैं, इसलिए हमने साझा डेटाबेस को स्रोत नियंत्रण भंडार में संलग्न किया है। प्रत्येक डेवलपर SQL सर्वर प्रबंधन स्टूडियो (एसएसएमएस) के माध्यम से डेटाबेस में ऑब्जेक्ट्स में परिवर्तन करने के लिए ज़िम्मेदार है, और जब वे समाप्त हो जाते हैं, तो वे अपने नियंत्रण स्रोत नियंत्रण में कर सकते हैं। जब हम स्टेजिंग के लिए तैनात करने के लिए तैयार होते हैं, तो बिल्ड मास्टर (मुझे) डेटाबेस कोड की विकास शाखा को मुख्य (स्टेजिंग) शाखा में विलीन कर देता है और फिर SQL और स्रोत के रूप में डेटाबेस के मुख्य शाखा भंडार संस्करण का उपयोग करके एसक्यूएल चलाता है लक्ष्यीकरण डेटाबेस को लक्ष्य के रूप में, और एसक्यूएल तुलना स्टेजिंग वातावरण में किए गए परिवर्तनों को तैनात करने के लिए आवश्यक स्क्रिप्ट उत्पन्न करता है। उत्पादन तैनाती के लिए स्टेजिंग समान फैशन में काम करता है। एक अन्य महत्वपूर्ण बात यह है कि, इस तथ्य को देखते हुए कि हम अन्य विकास टीमों के साथ एक ही डेटाबेस साझा कर रहे हैं, हम एसएससी की एक अंतर्निहित सुविधा का उपयोग करते हैं जो आपको डेटाबेस ऑब्जेक्ट्स पर नाम, प्रकार आदि द्वारा फ़िल्टर बनाने की अनुमति देता है। हम मैन्युअल रूप से जब हम अपनी तैनाती करते हैं तो हम अन्य विशिष्ट वस्तुओं को छोड़कर, हमारी विशिष्ट टीम की वस्तुओं पर फ़िल्टर सेट अप करते हैं, ताकि हम गलती से अन्य विकास टीम के बदलाव न करें।
तो आम तौर पर यह सेट अप और उपयोग करने के लिए एक काफी सरल उत्पाद है और यह वास्तव में अच्छा है क्योंकि आप हमेशा एसएसएमएस में लाइव ऑब्जेक्ट्स के साथ काम कर रहे हैं, क्योंकि एक अलग स्रोत भंडार में संग्रहीत डिस्कनेक्ट की गई स्क्रिप्ट फ़ाइलों के विपरीत, जो जोखिम का जोखिम उठाते हैं सिंक से बाहर निकलना यह भी अच्छा है क्योंकि एसक्यूएल तुलना आपके लिए तैनाती स्क्रिप्ट उत्पन्न करती है, इसलिए आपको त्रुटियों को पेश करने की चिंता करने की आवश्यकता नहीं है, जैसे आप स्वयं स्क्रिप्ट बना रहे हों। और चूंकि एसक्यूएल तुलना एक बहुत परिपक्व और स्थिर उत्पाद है, इसलिए आप बहुत आश्वस्त महसूस कर सकते हैं कि यह आपके लिए उचित स्क्रिप्ट तैयार करने जा रहा है।
- एसएससी के लिए डाटाबेस सर्वर के साथ संचार के मामले में सुंदर बॉक्स से बाहर बातूनी है: ही कहा जा रहा साथ
, हालांकि, यहां quirks है कि मैं अब तक में चलाने की है में से कुछ हैं स्रोत नियंत्रण भंडार के साथ सिंक्रनाइज़ेशन से बाहर डेटाबेस आइटम का ट्रैक रखें। यह प्रत्येक कुछ मिलीसेकंड का चुनाव करता है और यदि आप एसएससी का उपयोग कर एक ही डेटाबेस के खिलाफ काम कर रहे कई डेवलपर्स में जोड़ते हैं, तो आप कल्पना कर सकते हैं कि हमारे डीबीए बहुत खुश नहीं थे। सौभाग्य से, आप आसानी से अपनी मतदान आवृत्ति को कुछ और स्वीकार्य रूप से कम कर सकते हैं, हालांकि वस्तुओं को बदलने के दौरान उत्तरदायी दृश्य सूचनाओं को त्यागने की लागत पर।
- ऑब्जेक्ट फ़िल्टरिंग सुविधा का उपयोग करके, आप आसानी से एसएसएमएस में ऑब्जेक्ट्स को देखने से नहीं कह सकते हैं, जो आपके फ़िल्टर में ऑब्जेक्ट्स शामिल हैं। तो आप निश्चित रूप से नहीं जानते कि कोई ऑब्जेक्ट स्रोत नियंत्रण में है, विजुअल स्टूडियो के विपरीत, जहां स्रोत नियंत्रित वस्तुओं को इंगित करने के लिए आइकन का उपयोग किया जाता है।
- ऑब्जेक्ट फ़िल्टरिंग जीयूआई बहुत गुंजाइश है। इस तथ्य के कारण कि हम विरासत डेटाबेस वातावरण में काम कर रहे हैं, वर्तमान में हमारे टीम के स्वामित्व वाली वस्तुओं और अन्य टीमों के स्वामित्व वाले लोगों के बीच एक स्पष्ट अलगाव नहीं है, ताकि हमें अन्य टीमों के परिवर्तनों को गलती से तैनात/तैनात करने से रोका जा सके। , हमने अपनी विशिष्ट विशिष्ट वस्तु को स्पष्ट रूप से शामिल करने के लिए एक फ़िल्टरिंग योजना स्थापित की है। जैसा कि आप कल्पना कर सकते हैं, यह काफी बोझिल हो जाता है, और फिल्टर को संपादित करने के लिए जीयूआई एक समय में एक ऑब्जेक्ट दर्ज करने के लिए सेट किया जाता है, यह काफी दर्दनाक हो सकता है, विशेष रूप से पहली बार आपके पर्यावरण को स्थापित करने की कोशिश कर रहा है (मैं समाप्त हुआ ऐसा करने के लिए एक आवेदन लिखना)। आगे बढ़ते हुए, हम ऑब्जेक्ट फ़िल्टरिंग को बेहतर बनाने के लिए हमारे आवेदन के लिए एक नई स्कीमा बना रहे हैं (वैसे भी बेहतर अभ्यास होने के अलावा)।
- साझा डेटाबेस मॉडल का उपयोग करके, डेवलपर्स को किसी स्रोत नियंत्रित डेटाबेस में लंबित परिवर्तन करने की अनुमति है, भले ही परिवर्तन उनके न हों। यदि आप परिवर्तनों के समूह में जांच करने का प्रयास करते हैं तो एसएससी आपको चेतावनी देता है कि ये परिवर्तन आपके नहीं हो सकते हैं, लेकिन इसके अलावा आप स्वयं ही हैं। मुझे वास्तव में यह एसएससी के सबसे खतरनाक "quirks" में से एक होने के लिए मिलता है।
- एसक्यूएल तुलना वर्तमान में एसएससी द्वारा बनाए गए ऑब्जेक्ट फ़िल्टर को साझा नहीं कर सकता है, इसलिए आपको SQL तुलना में मैन्युअल रूप से मिलान करने वाला फ़िल्टर बनाना होगा, इसलिए एक खतरे है कि ये सिंक से बाहर हो सकते हैं। मैं अंतर्निहित एसएससी फ़िल्टर फ़ाइल से फ़िल्टर को कट-एंड-पेस्ट करना समाप्त कर देता हूं, एसक्यूएल में प्रोजेक्ट फ़िल्टर की तुलना करें, गुंजाइश ऑब्जेक्ट फ़िल्टरिंग जीयूआई से निपटने से बचने के लिए। मेरा मानना है कि एसक्यूएल तुलना का अगला संस्करण एसएससी के साथ फ़िल्टर साझा करने की अनुमति देगा, इसलिए कम से कम यह समस्या केवल एक छोटी अवधि है। (नोट: यह समस्या एसक्यूएल तुलना के नवीनतम संस्करण में हल हो गई है। एसक्यूएल तुलना अब एसएससी द्वारा बनाए गए ऑब्जेक्ट फ़िल्टर का उपयोग कर सकती है।)
- एसक्यूएल तुलना सीधे लॉन्च होने पर एसएससी डेटाबेस भंडार के खिलाफ तुलना नहीं कर सकती है। इसे एसएसएमएस के भीतर से लॉन्च किया जाना है। मेरा मानना है कि एसक्यूएल तुलना का अगला संस्करण इस कार्यक्षमता को प्रदान करेगा, इसलिए फिर यह एक और छोटी अवधि की समस्या है। (नोट: यह समस्या SQL तुलना के नवीनतम संस्करण में हल हो गई है।)
- कभी-कभी एसक्यूएल तुलना एक राज्य से दूसरे राज्य में लक्षित डेटाबेस प्राप्त करने के लिए उचित स्क्रिप्ट बनाने में सक्षम नहीं होती है, आमतौर पर उस मामले में आप मौजूदा टेबल की स्कीमा अपडेट कर रहे हैं जो खाली नहीं हैं, इसलिए आपको वर्तमान में मैन्युअल स्क्रिप्ट लिखनी है और प्रक्रिया को स्वयं प्रबंधित करना है।सौभाग्य से, इसे एसएससी की अगली रिलीज में "माइग्रेशन स्क्रिप्ट" के माध्यम से संबोधित किया जाएगा, और उत्पाद के प्रारंभिक रिलीज संस्करण को देखने से, ऐसा लगता है कि इस नई सुविधा के कार्यान्वयन को अच्छी तरह से सोचा और डिजाइन किया गया था। (नोट: माइग्रेशन स्क्रिप्ट कार्यक्षमता आधिकारिक तौर पर जारी की गई है। हालांकि, यह वर्तमान में ब्रांचिंग का समर्थन नहीं करता है। अगर आप माइग्रेशन स्क्रिप्ट का उपयोग करना चाहते हैं, तो आपको अपनी मूल विकास कोड शाखा के विरुद्ध एसक्यूएल तुलना करने की आवश्यकता होगी ... जिस पर आपने चेक किया था अपने परिवर्तनों को ... जो बहुत भद्दा है और मुझे एक से भी कम समय आदर्श तरीका में अपने निर्माण की प्रक्रिया को संशोधित करने के क्रम में इस सीमा के आसपास काम करने के लिए मजबूर कर दिया है में। उम्मीद है कि यह एक भविष्य के रिलीज में संबोधित किया जाएगा।)
कुल मिलाकर, मैं उत्पाद के साथ और रेडगेट की प्रतिक्रिया को उपयोगकर्ता प्रतिक्रिया और उत्पाद की दिशा में दिशा के साथ बहुत खुश हूं। उत्पाद का उपयोग करना और अच्छी तरह डिज़ाइन करना बहुत आसान है, और मुझे लगता है कि अगली रिलीज या दो में उत्पाद शायद हमें सबसे अधिक, अगर नहीं, तो हमें जो कुछ चाहिए, उतना ही अधिक देगा।
स्रोत
2011-10-27 19:37:27
मुझे फीडबैक भी पसंद आएगा - हमें एसक्यूएल सर्वर के लिए कुछ स्रोत नियंत्रण की आवश्यकता है, और हमारे सर्वोत्तम प्रयास के बावजूद, विजुअल स्टूडियो डाटाबेस इसे काट नहीं रहा है। – SqlRyan
मैंने एक परीक्षण संस्करण डाउनलोड किया है। यह एक दयालु बात है कि यह भंडार से पुराने संशोधन प्राप्त करने का समर्थन नहीं करता है, केवल नवीनतम। वास्तव में मुझे यकीन नहीं है कि एसक्यूएल स्रोत नियंत्रण और एसक्यूएल तुलना के बीच क्या अंतर है? – atricapilla
ओह तो आपको ऐतिहासिक "पुराने" संशोधन देखने के लिए वास्तविक एसवीएन भंडार फ़ोल्डर में जाना होगा? – scarpacci