2010-08-23 10 views
19

से SQL स्रोत नियंत्रण का उपयोग करने वाले कोई भी हम अपने SQL स्रोत नियंत्रण के लिए संभावित समाधान देख रहे हैं। मैं बस लाल गेट्स एसक्यूएल स्रोत नियंत्रण में आया और सोच रहा था कि किसी ने इसे लागू किया है या नहीं? मैं परीक्षण डाउनलोड करने जा रहा हूं और इसे एक शॉट दे रहा हूं, लेकिन सिर्फ यह देखना चाहता था कि दूसरों के पास असली अनुभव है या नहीं। > परीक्षण - -लाल गेट

हमेशा की तरह बहुत इनपुट

--S

+1

मुझे फीडबैक भी पसंद आएगा - हमें एसक्यूएल सर्वर के लिए कुछ स्रोत नियंत्रण की आवश्यकता है, और हमारे सर्वोत्तम प्रयास के बावजूद, विजुअल स्टूडियो डाटाबेस इसे काट नहीं रहा है। – SqlRyan

+0

मैंने एक परीक्षण संस्करण डाउनलोड किया है। यह एक दयालु बात है कि यह भंडार से पुराने संशोधन प्राप्त करने का समर्थन नहीं करता है, केवल नवीनतम। वास्तव में मुझे यकीन नहीं है कि एसक्यूएल स्रोत नियंत्रण और एसक्यूएल तुलना के बीच क्या अंतर है? – atricapilla

+0

ओह तो आपको ऐतिहासिक "पुराने" संशोधन देखने के लिए वास्तविक एसवीएन भंडार फ़ोल्डर में जाना होगा? – scarpacci

उत्तर

11

मैं एसक्यूएल जब देव से जा स्क्रिप्ट पैदा करने के लिए की तुलना का उपयोग सराहना> उत्पादन और यह मेरे समय की टन बचाता है।

हालांकि स्रोत नियंत्रण के लिए, हम एसवीएन और स्क्रिप्ट डीबी (http://scriptdb.codeplex.com/) का उपयोग करते हैं। मैं मुख्य रूप से परिवर्तनों का ट्रैक रखने के लिए एसक्यूएल स्क्रिप्ट के स्रोत नियंत्रण का उपयोग करता हूं। मुझे लगता है कि डेटाबेस के संस्करण को शायद ही कभी रोल करना (यदि कभी भी) काम करता है क्योंकि संरचना परिवर्तन करते समय डेटा बदल सकता है।

यह हमारी कुछ मौजूदा परियोजनाओं के लिए ठीक काम करता है (सबसे बड़ा 200 टेबल और 2000 स्पॉक्स है)। ऐसा करने का मुख्य कारण लागत है क्योंकि सभी टीम के सदस्यों को एसक्यूएल तुलना करना नहीं है (मैं वाणिज्यिक परियोजनाओं पर निर्भरता जोड़ने से बचता हूं जब तक वास्तव में आवश्यकता नहीं होती)।

+0

मुझे लगता है कि आप संदर्भ तालिकाओं के लिए हमेशा लाल-गेट SQL डेटा तुलना का उपयोग कर सकते हैं, हालांकि यह किसी भी तरह का दर्द है। –

+0

जैसा कि आप कहते हैं, यह संदर्भ तालिकाओं के लिए बहुत अच्छा काम करता है, लेकिन यदि आप किसी इकाई तालिका (उदा। ग्राहक) की संरचना को संशोधित कर रहे हैं या संगठनों को बदल रहे हैं, तो डेटाबेस के पुराने संस्करण के मनोरंजन के समय आप परेशानी में हैं। –

+0

हम v2.0 में SQL स्रोत नियंत्रण UI से स्टेटिक डेटा का समर्थन करने की उम्मीद करते हैं। हम मानते हैं कि हालांकि SQL डेटा तुलना का उपयोग करना संभव है, एसएसएमएस एकीकरण उपयोगकर्ता अनुभव में काफी सुधार करेगा। डेविड एटकिन्सन, रेड गेट सॉफ्टवेयर। –

3

हमने रेड गेट के उत्पाद का व्यापक मूल्यांकन किया और कुछ प्रमुख त्रुटियां पाईं। यदि आप किसी ऑब्जेक्ट को किसने बदलना चाहते हैं, तो आप इसे SysAdmin विशेषाधिकारों के बिना नहीं कर सकते हैं। उत्पाद को आपके सर्वर पर ट्रेस देखने की आवश्यकता है, जिसके लिए उन अधिकारों की आवश्यकता होती है। मैं 5+ व्यक्ति टीम में हूं, और यह नहीं जानता कि कौन से लंबित परिवर्तन हुए हैं, वह हमें उत्पाद का उपयोग करने से रोक देगा।

+4

यदि मैं सही ढंग से समझता हूं, तो आपके डेवलपर्स सभी चीजों को सीधे उत्पादन के लिए एक्सेस करते हैं और तैनात करते हैं? या उनके पास अपने देव बॉक्स पर एसए निजी भी नहीं है? किसी भी तरह से मुझे लगता है कि शायद उपयोग के करीब एक निकट किनारे का मामला है। आम तौर पर डेवलपर्स के पास अपने स्वयं के बॉक्स पर एसए होता है, कभी-कभी/अक्सर क्यूए बॉक्स पर एसए पहुंच होती है, और आम तौर पर केवल 1 व्यक्ति या कुछ डीबीए के पास प्रोड तक पहुंच होती है, इस मामले में आप हमेशा जानते हैं कि किसने प्रोड को बदल दिया। मेरे 2 सेंट – JDPeckham

25

मैंने SQL स्रोत नियंत्रण (3.0) और एसक्यूएल तुलना (10.1) के नवीनतम संस्करणों में परिवर्तनों को दर्शाने के लिए नीचे अपना मूल पोस्ट अपडेट किया है।

चूंकि इस सवाल से एक साल पहले पूछा गया था, इसलिए मेरी प्रतिक्रिया आपके लिए सहायक नहीं हो सकती है, लेकिन वर्तमान में एसएससी का मूल्यांकन करने वाले अन्य लोगों के लिए, मैंने सोचा कि मैं अपने दो सेंट में फेंक दूंगा। हमने अभी एसक्यूएल सोर्स कंट्रोल (एसएससी) का उपयोग करना शुरू कर दिया है और कुल मिलाकर मैं अब तक काफी संतुष्ट हूं। हालांकि इसमें कुछ quirks है, खासकर यदि आप एक साझा डेटाबेस वातावरण में काम कर रहे हैं (स्थानीय रूप से काम कर रहे प्रत्येक डेवलपर के विपरीत) और विशेष रूप से एक विरासत पर्यावरण में काम कर रहे हैं जहां एक ही डेटाबेस में वस्तुओं को विकास टीमों के बीच खतरनाक रूप से विभाजित किया गया है।

हमारे संगठन में उत्पाद का उपयोग करने के तरीके के बारे में एक संक्षिप्त अवलोकन देने के लिए, हम एक साझा वातावरण में काम कर रहे हैं जहां हम सभी एक ही विकास डेटाबेस में परिवर्तन करते हैं, इसलिए हमने साझा डेटाबेस को स्रोत नियंत्रण भंडार में संलग्न किया है। प्रत्येक डेवलपर SQL सर्वर प्रबंधन स्टूडियो (एसएसएमएस) के माध्यम से डेटाबेस में ऑब्जेक्ट्स में परिवर्तन करने के लिए ज़िम्मेदार है, और जब वे समाप्त हो जाते हैं, तो वे अपने नियंत्रण स्रोत नियंत्रण में कर सकते हैं। जब हम स्टेजिंग के लिए तैनात करने के लिए तैयार होते हैं, तो बिल्ड मास्टर (मुझे) डेटाबेस कोड की विकास शाखा को मुख्य (स्टेजिंग) शाखा में विलीन कर देता है और फिर SQL और स्रोत के रूप में डेटाबेस के मुख्य शाखा भंडार संस्करण का उपयोग करके एसक्यूएल चलाता है लक्ष्यीकरण डेटाबेस को लक्ष्य के रूप में, और एसक्यूएल तुलना स्टेजिंग वातावरण में किए गए परिवर्तनों को तैनात करने के लिए आवश्यक स्क्रिप्ट उत्पन्न करता है। उत्पादन तैनाती के लिए स्टेजिंग समान फैशन में काम करता है। एक अन्य महत्वपूर्ण बात यह है कि, इस तथ्य को देखते हुए कि हम अन्य विकास टीमों के साथ एक ही डेटाबेस साझा कर रहे हैं, हम एसएससी की एक अंतर्निहित सुविधा का उपयोग करते हैं जो आपको डेटाबेस ऑब्जेक्ट्स पर नाम, प्रकार आदि द्वारा फ़िल्टर बनाने की अनुमति देता है। हम मैन्युअल रूप से जब हम अपनी तैनाती करते हैं तो हम अन्य विशिष्ट वस्तुओं को छोड़कर, हमारी विशिष्ट टीम की वस्तुओं पर फ़िल्टर सेट अप करते हैं, ताकि हम गलती से अन्य विकास टीम के बदलाव न करें।

तो आम तौर पर यह सेट अप और उपयोग करने के लिए एक काफी सरल उत्पाद है और यह वास्तव में अच्छा है क्योंकि आप हमेशा एसएसएमएस में लाइव ऑब्जेक्ट्स के साथ काम कर रहे हैं, क्योंकि एक अलग स्रोत भंडार में संग्रहीत डिस्कनेक्ट की गई स्क्रिप्ट फ़ाइलों के विपरीत, जो जोखिम का जोखिम उठाते हैं सिंक से बाहर निकलना यह भी अच्छा है क्योंकि एसक्यूएल तुलना आपके लिए तैनाती स्क्रिप्ट उत्पन्न करती है, इसलिए आपको त्रुटियों को पेश करने की चिंता करने की आवश्यकता नहीं है, जैसे आप स्वयं स्क्रिप्ट बना रहे हों। और चूंकि एसक्यूएल तुलना एक बहुत परिपक्व और स्थिर उत्पाद है, इसलिए आप बहुत आश्वस्त महसूस कर सकते हैं कि यह आपके लिए उचित स्क्रिप्ट तैयार करने जा रहा है।

  • एसएससी के लिए डाटाबेस सर्वर के साथ संचार के मामले में सुंदर बॉक्स से बाहर बातूनी है:

    ही कहा जा रहा साथ

    , हालांकि, यहां quirks है कि मैं अब तक में चलाने की है में से कुछ हैं स्रोत नियंत्रण भंडार के साथ सिंक्रनाइज़ेशन से बाहर डेटाबेस आइटम का ट्रैक रखें। यह प्रत्येक कुछ मिलीसेकंड का चुनाव करता है और यदि आप एसएससी का उपयोग कर एक ही डेटाबेस के खिलाफ काम कर रहे कई डेवलपर्स में जोड़ते हैं, तो आप कल्पना कर सकते हैं कि हमारे डीबीए बहुत खुश नहीं थे। सौभाग्य से, आप आसानी से अपनी मतदान आवृत्ति को कुछ और स्वीकार्य रूप से कम कर सकते हैं, हालांकि वस्तुओं को बदलने के दौरान उत्तरदायी दृश्य सूचनाओं को त्यागने की लागत पर।

  • ऑब्जेक्ट फ़िल्टरिंग सुविधा का उपयोग करके, आप आसानी से एसएसएमएस में ऑब्जेक्ट्स को देखने से नहीं कह सकते हैं, जो आपके फ़िल्टर में ऑब्जेक्ट्स शामिल हैं। तो आप निश्चित रूप से नहीं जानते कि कोई ऑब्जेक्ट स्रोत नियंत्रण में है, विजुअल स्टूडियो के विपरीत, जहां स्रोत नियंत्रित वस्तुओं को इंगित करने के लिए आइकन का उपयोग किया जाता है।
  • ऑब्जेक्ट फ़िल्टरिंग जीयूआई बहुत गुंजाइश है। इस तथ्य के कारण कि हम विरासत डेटाबेस वातावरण में काम कर रहे हैं, वर्तमान में हमारे टीम के स्वामित्व वाली वस्तुओं और अन्य टीमों के स्वामित्व वाले लोगों के बीच एक स्पष्ट अलगाव नहीं है, ताकि हमें अन्य टीमों के परिवर्तनों को गलती से तैनात/तैनात करने से रोका जा सके। , हमने अपनी विशिष्ट विशिष्ट वस्तु को स्पष्ट रूप से शामिल करने के लिए एक फ़िल्टरिंग योजना स्थापित की है। जैसा कि आप कल्पना कर सकते हैं, यह काफी बोझिल हो जाता है, और फिल्टर को संपादित करने के लिए जीयूआई एक समय में एक ऑब्जेक्ट दर्ज करने के लिए सेट किया जाता है, यह काफी दर्दनाक हो सकता है, विशेष रूप से पहली बार आपके पर्यावरण को स्थापित करने की कोशिश कर रहा है (मैं समाप्त हुआ ऐसा करने के लिए एक आवेदन लिखना)। आगे बढ़ते हुए, हम ऑब्जेक्ट फ़िल्टरिंग को बेहतर बनाने के लिए हमारे आवेदन के लिए एक नई स्कीमा बना रहे हैं (वैसे भी बेहतर अभ्यास होने के अलावा)।
  • साझा डेटाबेस मॉडल का उपयोग करके, डेवलपर्स को किसी स्रोत नियंत्रित डेटाबेस में लंबित परिवर्तन करने की अनुमति है, भले ही परिवर्तन उनके न हों। यदि आप परिवर्तनों के समूह में जांच करने का प्रयास करते हैं तो एसएससी आपको चेतावनी देता है कि ये परिवर्तन आपके नहीं हो सकते हैं, लेकिन इसके अलावा आप स्वयं ही हैं। मुझे वास्तव में यह एसएससी के सबसे खतरनाक "quirks" में से एक होने के लिए मिलता है।
  • एसक्यूएल तुलना वर्तमान में एसएससी द्वारा बनाए गए ऑब्जेक्ट फ़िल्टर को साझा नहीं कर सकता है, इसलिए आपको SQL तुलना में मैन्युअल रूप से मिलान करने वाला फ़िल्टर बनाना होगा, इसलिए एक खतरे है कि ये सिंक से बाहर हो सकते हैं। मैं अंतर्निहित एसएससी फ़िल्टर फ़ाइल से फ़िल्टर को कट-एंड-पेस्ट करना समाप्त कर देता हूं, एसक्यूएल में प्रोजेक्ट फ़िल्टर की तुलना करें, गुंजाइश ऑब्जेक्ट फ़िल्टरिंग जीयूआई से निपटने से बचने के लिए। मेरा मानना ​​है कि एसक्यूएल तुलना का अगला संस्करण एसएससी के साथ फ़िल्टर साझा करने की अनुमति देगा, इसलिए कम से कम यह समस्या केवल एक छोटी अवधि है। (नोट: यह समस्या एसक्यूएल तुलना के नवीनतम संस्करण में हल हो गई है। एसक्यूएल तुलना अब एसएससी द्वारा बनाए गए ऑब्जेक्ट फ़िल्टर का उपयोग कर सकती है।)
  • एसक्यूएल तुलना सीधे लॉन्च होने पर एसएससी डेटाबेस भंडार के खिलाफ तुलना नहीं कर सकती है। इसे एसएसएमएस के भीतर से लॉन्च किया जाना है। मेरा मानना ​​है कि एसक्यूएल तुलना का अगला संस्करण इस कार्यक्षमता को प्रदान करेगा, इसलिए फिर यह एक और छोटी अवधि की समस्या है। (नोट: यह समस्या SQL तुलना के नवीनतम संस्करण में हल हो गई है।)
  • कभी-कभी एसक्यूएल तुलना एक राज्य से दूसरे राज्य में लक्षित डेटाबेस प्राप्त करने के लिए उचित स्क्रिप्ट बनाने में सक्षम नहीं होती है, आमतौर पर उस मामले में आप मौजूदा टेबल की स्कीमा अपडेट कर रहे हैं जो खाली नहीं हैं, इसलिए आपको वर्तमान में मैन्युअल स्क्रिप्ट लिखनी है और प्रक्रिया को स्वयं प्रबंधित करना है।सौभाग्य से, इसे एसएससी की अगली रिलीज में "माइग्रेशन स्क्रिप्ट" के माध्यम से संबोधित किया जाएगा, और उत्पाद के प्रारंभिक रिलीज संस्करण को देखने से, ऐसा लगता है कि इस नई सुविधा के कार्यान्वयन को अच्छी तरह से सोचा और डिजाइन किया गया था। (नोट: माइग्रेशन स्क्रिप्ट कार्यक्षमता आधिकारिक तौर पर जारी की गई है। हालांकि, यह वर्तमान में ब्रांचिंग का समर्थन नहीं करता है। अगर आप माइग्रेशन स्क्रिप्ट का उपयोग करना चाहते हैं, तो आपको अपनी मूल विकास कोड शाखा के विरुद्ध एसक्यूएल तुलना करने की आवश्यकता होगी ... जिस पर आपने चेक किया था अपने परिवर्तनों को ... जो बहुत भद्दा है और मुझे एक से भी कम समय आदर्श तरीका में अपने निर्माण की प्रक्रिया को संशोधित करने के क्रम में इस सीमा के आसपास काम करने के लिए मजबूर कर दिया है में। उम्मीद है कि यह एक भविष्य के रिलीज में संबोधित किया जाएगा।)

कुल मिलाकर, मैं उत्पाद के साथ और रेडगेट की प्रतिक्रिया को उपयोगकर्ता प्रतिक्रिया और उत्पाद की दिशा में दिशा के साथ बहुत खुश हूं। उत्पाद का उपयोग करना और अच्छी तरह डिज़ाइन करना बहुत आसान है, और मुझे लगता है कि अगली रिलीज या दो में उत्पाद शायद हमें सबसे अधिक, अगर नहीं, तो हमें जो कुछ चाहिए, उतना ही अधिक देगा।

+0

अच्छा विस्तृत जवाब। वर्तमान में हम उपकरण का मूल्यांकन कर रहे हैं। माइग्रेशन स्क्रिप्ट और ब्रांचिंग के बारे में क्या, क्या यह पिछले संस्करण पर बदल गया है? – Yaroslav

+0

दरअसल, मुझे लगता है कि मुझे अपना जवाब अपडेट करने के लिए वापस जाना चाहिए था। मैंने उत्पाद के साथ इतने सारे मुद्दों को समाप्त कर दिया और इसे बेबीसिट करने के लिए इतना समय बिताया और उन कंकों के माध्यम से काम किया जिन्हें मैं अब इसकी अनुशंसा नहीं करता हूं।वर्तमान में हम फ्लुएंट माइग्रेटर का उपयोग कर रहे हैं और मैं इससे बहुत संतुष्ट हूं। अनिवार्य रूप से सब कुछ माइग्रेशन स्क्रिप्ट के रूप में लिखा जाता है, और आपके एप्लिकेशन को स्वचालित रूप से नवीनतम संस्करण में अपग्रेड करने के लिए कॉन्फ़िगर किया जा सकता है, एक अवधारणा जिसे मेरा मानना ​​है कि रेल पर रुबी में अग्रणी था। स्क्रिप्ट को स्रोत नियंत्रण में चेक किया जाना चाहिए, इसलिए मुझे विश्वास है कि ब्रांचिंग का ख्याल रख सकता है। –