स्रोत नियंत्रण के तहत संग्रहित प्रक्रियाएं, सर्वोत्तम अभ्यास


16

मैं वर्तमान में .NET वेब एप्लिकेशन को नियंत्रित करने के लिए कछुआ SVN का उपयोग कर रहा हूं। स्रोत नियंत्रण में हमारे SQL सर्वर संग्रहीत प्रक्रियाओं को लाने का सबसे अच्छा तरीका क्या होगा? मैं वर्तमान में अपने विकास के वातावरण के रूप में वीएस 2010 का उपयोग कर रहा हूं और एसक्यूएल सर्वर डेटा टूल्स (एसएसएलटी) का उपयोग करके एक ऑफ-प्रीमियर SQL Server 2008 R2 डेटाबेस से जुड़ रहा हूं।

अतीत में मैं जो कर रहा था वह प्रॉक्सेस को एक .sql फ़ाइल में सहेज रहा है और इस फाइल को सोर्स कंट्रोल में रख रहा है। मुझे यकीन है कि इससे अधिक कुशल तरीका होना चाहिए? क्या कोई एक्सटेंशन है जिसे मैं उत्पादन मशीन पर VS2010, SSDT या यहां तक ​​कि SQL सर्वर पर स्थापित कर सकता हूं?


2
यदि आप Visual Studio में SSDT प्रोजेक्ट प्रकार का उपयोग कर रहे हैं, तो उस प्रोजेक्ट को स्रोत नियंत्रण में जोड़ें। बस।
मार्क स्टोरी-स्मिथ

1
कृपया अपने उद्देश्य (यों) को स्पष्ट करें - क्या आप सिर्फ डेटाबेस ऑब्जेक्ट्स के संस्करण की तलाश कर रहे हैं, या आप इसे एक तैनाती मंच के रूप में भी उपयोग करने की कोशिश कर रहे हैं?
जॉन सीगल

जवाबों:


14

वहाँ उपकरण हैं, जैसे कि Redgate से यह , लेकिन मैंने हमेशा पाया है कि SQL फ़ाइलों के रूप में सहेजना सबसे अच्छा है, शायद आपके समाधान में एक डेटाबेस प्रोजेक्ट (SSDT?) में भी।

इसके साथ ही, मैं निम्नलिखित दिशानिर्देशों का सुझाव देता हूं:

  • हमेशा "वर्तमान" / "नवीनतम" के रूप में एसवीएन संस्करण मानें
  • सुनिश्चित करें कि आपके द्वारा चलायी जाने वाली प्रत्येक स्क्रिप्ट if exists then dropमें शुरू में एक उपयुक्त " " है
  • अपनी अनुमतियों को स्क्रिप्ट के लिए याद रखें, यदि कोई हो

आप शुरुआत में SSMS से सीधे स्क्रिप्ट करके इन SQL फ़ाइलों को बना सकते हैं, और आप SSMS को अपने सभी " drop" और " create" स्क्रिप्ट के साथ-साथ अपनी अनुमतियों के लिए सेट कर सकते हैं ।


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

इसके अलावा उत्पादों पर अधिकार रखने वालों को भी अनुमति न दें और केवल नियंत्रण के स्रोत से ही अधिकार प्राप्त करें।
HLGEM

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

@DavidSpillett की टिप्पणी और भी महत्वपूर्ण है अगर आपके पास संस्करण नियंत्रण में ट्रिगर है, क्योंकि ड्रॉप + क्रिएट गतिरोध पर भी विफल हो सकता है, डमी + परिवर्तन बनाने के साथ नहीं होना चाहिए
जेम्स जेड

4

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


3

RedGate स्रोत नियंत्रण का उपयोग करके इसे अपने स्रोत नियंत्रण तक हुक करें।

http://www.red-gate.com/products/sql-development/sql-source-control/

यह आपके SSMS को सीधे आपके सोर्स कंट्रोल रिपॉजिटरी में हुक कर देगा और स्टैटिक डेटा में चेक करने की अनुमति भी देगा।

एक जादू की तरह काम करता है


3

अत्यधिक अनुशंसित और मुफ्त में, अंख्सवन का प्रयास करें।

मुखपृष्ठ से:

AnkhSVN Microsoft Visual Studio 2005, 2008, 2010 और 2012 के लिए एक तोड़फोड़ स्रोत नियंत्रण प्रदाता है ।

AnkhSVN विजुअल स्टूडियो द्वारा समर्थित सभी प्रोजेक्ट प्रकारों को Apache ™ Subversion® स्रोत कोड प्रबंधन सहायता प्रदान करता है और आपको Microsoft Visual Studio IDE के अंदर से सीधे सबसे सामान्य संस्करण नियंत्रण संचालन करने की अनुमति देता है।

लंबित परिवर्तन डैशबोर्ड आपको अपनी विकास प्रक्रिया में एक अद्वितीय अंतर्दृष्टि देता है और स्रोत कोड और प्रबंधन सुविधाओं को जारी करने की आसान पहुँच प्रदान करता है। डीप सोर्स कोड कंट्रोल (SCC) एकीकरण आपको विकास पर ध्यान केंद्रित करने की अनुमति देता है, जबकि AnkhSVN आपके सभी परिवर्तनों पर नज़र रखता है और आपको अपनी विशिष्ट आवश्यकताओं को प्रभावी ढंग से संभालने के लिए उपकरण प्रदान करता है।


3

मैंने RedGate और Visual Studio दोनों के डेटाबेस प्रोजेक्ट को आज़माया है और मैं डेटाबेस प्रोजेक्ट में डेटाबेस की परिभाषा को संग्रहीत करना पसंद करता हूँ। जैसे ही डेटाबेस समाधान का हिस्सा बन जाता है, आप अपने पसंदीदा स्रोत नियंत्रण प्रदाता का उपयोग कर सकते हैं। अधिकांश में उत्कृष्ट विज़ुअल स्टूडियो एकीकरण है।

SSDT टूल के साथ आपके पास डेटाबेस परिभाषा का 'नवीनतम संस्करण' है, जिससे आप आसानी से स्कीमा तुलना कर सकते हैं और स्कीमा अपग्रेड स्क्रिप्ट उत्पन्न कर सकते हैं।

उन्होंने कहा, स्कीमा आमतौर पर केवल एक हिस्सा होता है। वास्तविक जीवन में यह पता चला है कि डेटाबेस में पहले से ही बहुत सारा डेटा है। और मेरे उपयोगकर्ता इसे ढीला करने के बजाय निराश हो जाते हैं।

इसलिए जैसे ही मैंने v1.0 को रोल आउट किया, अपग्रेड स्क्रिप्ट को बनाए रखने के लिए आवश्यकता में वृद्धि हुई। कभी-कभी इनमें सिर्फ स्कीमा परिवर्तन होते हैं, लेकिन कई बार मुझे किसी अन्य तालिका की सामग्री के आधार पर चूक बनाने की आवश्यकता होती है, जब तक कि मैं डेटा को बीजित नहीं करता हूं, तब तक एक विशेष बाधा को जारी करने की आवश्यकता होती है। आमतौर पर स्कीमा को अपग्रेड करने से इसमें काफी कटौती नहीं होती है। मेरी प्राथमिकता डेटाबेस प्रोजेक्ट में एक अलग फ़ोल्डर में इन अपग्रेड स्क्रिप्ट को रखना है। ये आमतौर पर 'अपग्रेड v1.0 से v1.1' तक दिखते हैं।

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

डेटाबेस परियोजनाओं से एक और लाभ एक ही स्कीमा के आधार पर डेटा के विभिन्न सेटों को तैनात करने में सक्षम होना है। मेरे पास विकास के लिए एक अलग डेटासेट, क्यूए टीम, उपयोगकर्ता स्वीकृति परीक्षण और स्वचालित एकीकरण परीक्षण हैं। चूंकि एक डेटाबेस प्रोजेक्ट में केवल 1 पोस्ट-तैनाती स्क्रिप्ट हो सकती है, इसलिए यहां ट्रिक एक नया डेटाबेस प्रोजेक्ट बनाने के लिए है जो 'मास्टर' प्रोजेक्ट को संदर्भित करता है और कस्टम डेटासेट को उस प्रोजेक्ट की पोस्ट परिनियोजन सत्रों का हिस्सा बनाने के लिए है।

ये मेरे 2 सेंट थे, जो भी आप आएंगे, इन सबसे ऊपर, यह आपको और आपकी टीम को फिट करना चाहिए और अधिकांश सामान्य कार्यों में आपका समर्थन करना चाहिए।


0

मैंने खुद एक टूल लिखना शुरू किया।

यह मुफ्त डाउनलोड के लिए उपलब्ध है - http://www.gitsql.net

मुझे आशा है कि यह अन्य लोगों की मदद करता है जो समान लक्ष्य प्राप्त करना चाहते हैं।

यहाँ एक लेख है जो बताता है कि SQL सर्वर को कैसे नियंत्रित किया जाए। http://gitsql.net/documentation-04_SQL_Server_and_GIT

मैंने इसे यथासंभव आसान बनाने की कोशिश की है। (3 स्क्रीन)

  • SQL सर्वर से कनेक्ट करें
  • वस्तुओं का चयन करें
  • से निर्यात / आयात करने के लिए फ़ोल्डर का चयन करें

मैंने भी - गलती से - चुनिंदा रूप से व्यक्तिगत वस्तुओं को आयात या निर्यात करने में सक्षम होने की सुविधा को जोड़ा। जो इसे विकसित करते हुए बहुत आसान बनाता है।

मैं आमतौर पर एक संग्रहीत प्रक्रिया और एक तालिका में बदलाव करता हूं, और फिर उन दो वस्तुओं को जीआईटी निर्देशिका में निर्यात करता हूं।

फिर मैं स्रोत ट्री का उपयोग नेत्रहीन परिवर्तनों को देखने के लिए करता हूं और फिर उन्हें बिटकॉइन में डाल देता हूं अगर मैं खुश हूं।


4
मुफ्त डाउनलोड - लेकिन केवल 20 वस्तुओं के लिए। यह उत्तर आपके उत्पाद के लिए एक विज्ञापन मात्र है।
थ्रोंक

-1

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

Servantt SQL Server डेटाबेस की तुलना संस्करण-नियंत्रित लिपियों के लिए WinMerge है।

यह सॉफ्टवेयर विकास में सर्वोत्तम प्रथाओं का समर्थन करता है और प्रोत्साहित करता है:

  • डेटाबेस ऑब्जेक्ट्स को संस्करण-नियंत्रण (*) के अंतर्गत रखना
  • उत्पादन वातावरण पर डेवलपर्स से एक्सेस अधिकारों को हटाना
  • प्रदर्शन अड़चनों और नामकरण मानकों के लिए प्रक्रियाओं / विचारों में परिवर्तन की DBA समीक्षा
  • पूरी तरह से योग्य पहचानकर्ताओं और ब्रैकेटेड सीमांकक का उपयोग करके वस्तुओं का नामकरण करना (यह क्रिएट प्रक्रिया / दृश्य / समारोह / आदि स्क्रिप्ट को ठीक करता है)

(*) लिपियों को एक स्थानीय फ़ोल्डर में सहेजा जाता है जो गिट, तोड़फोड़, टीएफएस, स्रोत सुरक्षित, या किसी अन्य वीसीएस की एक कामकाजी प्रति हो सकती है।

मुफ्त डाउनलोड: http://servantt.com

पेशेवर संस्करण (जो अभी भी विकास के अधीन है) एक पूरी तरह से अलग जानवर होगा - यह तैनाती स्वचालन (रिलीज प्रबंधन) पर लक्षित है, जैसे कि IIS को अपडेट करने, विंडोज सेवाओं को अपडेट करने आदि जैसे कार्यों को स्वचालित करने के लिए।


यह उपकरण काम नहीं करता है।
नीरज कुमार

@ नीरजकुमार के पेज में "हमसे संपर्क करें" पता है जहां आप अपनी समस्या का वर्णन कर सकते हैं। मुझे मदद करने में खुशी होगी। एक हजार से अधिक सक्रिय उपयोगकर्ता हैं, मुझे लगता है कि यह कुछ अर्थों में काम करता है :-)
drizin
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.