Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

लाल गेट से SQL स्रोत नियंत्रण का उपयोग करने वाला कोई भी व्यक्ति

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

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

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

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

कहा जा रहा है कि, हालांकि, यहां कुछ ऐसे प्रश्न हैं जिनका मैंने अब तक सामना किया है:

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

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर (T-SQL) में 'समय' को 'डेटाटाइम' में बदलने के उदाहरण

  2. SQL सर्वर में वास्तविक एक-से-एक संबंध कैसे बनाएं

  3. SQL त्रुटि:कीवर्ड 'उपयोगकर्ता' के पास गलत सिंटैक्स

  4. SQL सर्वर में VARCHAR और NVARCHAR डेटा प्रकार

  5. SQL सर्वर (T-SQL) में किसी क्वेरी के परिणाम ईमेल कैसे करें