2009-01-01 9 views
11

मान लें कि हमारे पास निरंतर एकीकरण सर्वर है। जब मैं चेक-इन करता हूं, पोस्ट-हुक नवीनतम कोड खींचता है, परीक्षण चलाता है, सबकुछ संकुल करता है। डेटाबेस परिवर्तन स्वचालित करने का सबसे अच्छा तरीका क्या है?निरंतर एकीकरण के साथ SQL सर्वर डेटाबेस प्रबंधन

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

उत्तर

2

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

यदि आप इसे पसंद करते हैं और इसे कार्यान्वित कर सकते हैं, तो आपको उस पर बहुत अच्छा रिटर्न मिलेगा - लेकिन यह "सब कुछ या कुछ भी नहीं" दृष्टिकोण है। सिफारिश की।

+0

हम डीबी भूत (CC.NET साथ) का उपयोग भी मौजूद होना चाहिए। एकमात्र शिकायत यह है कि यदि आपके पास संग्रहीत प्रक्रिया स्क्रिप्ट में गैर ASCII वर्ण नहीं हैं (कुछ ऐसा है जो विजुअल स्टूडियो करता है जब आप इसकी डीबी प्रोजेक्ट का उपयोग करते हैं)। – StingyJack

0

डीबी घोस्ट का नवीनतम संस्करण (5.0) "गैर ASCII चरित्र" समस्या से ग्रस्त नहीं है (इसका मतलब है कि फ़ाइल यूटीएफ 8 एन्कोडेड है) और यह आपको वही करने में सक्षम होना चाहिए जो आपको चाहिए।

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

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

आप एक विजुअल स्टूडियो डेटाबेस प्रोजेक्ट भी बना सकते हैं और इसे वर्तमान में अपने किसी भी समाधान में जोड़ सकते हैं।

Malc

1

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

यहाँ एक चट्टान नोट अपने पैरों गीला पाने के लिए संस्करण है, लेकिन बहुत से इस क्षेत्र में वहाँ बाहर है: http://www.infoq.com/news/2008/02/versioning_databases_series

मैं विचारों स्कॉट Ambler यहाँ भी है कि के कुछ पसंद है, साइट अच्छा है लेकिन समस्याएं इस तरह के मुश्किल सेट के लिए आश्चर्यजनक रूप से गहरी है। http://www.agiledata.org/ http://www.amazon.com/exec/obidos/ASIN/0321293533/ambysoftinc

1

लाल गेट एसक्यूएल स्रोत नियंत्रण और SQL का उपयोग कर की तुलना करें प्रो कमांड लाइन दृष्टिकोण यहाँ कोड नमूने के साथ विस्तृत है: http://downloads.red-gate.com/HelpPDF/ContinuousIntegrationForDatabasesUsingRedGateSQLTools.pdf

ट्रॉय हंट जिसका शीर्षक था "एसक्यूएल के लिए सतत एकीकरण सरल टॉक पर एक लेख लिखा था सर्वर डेटाबेस ": http://www.simple-talk.com/content/article.aspx?article=1247

1

रेड गेट एक काफी मजबूत समाधान है और यह बॉक्स से बाहर काम करता है। लेकिन सबसे अच्छी बात यह है कि आप इसे अपनी निरंतर एकीकरण प्रक्रिया के साथ एकीकृत कर सकते हैं। मैं इसे एमएसबिल्ड और हडसन के साथ उपयोग करता हूं। जल्दी से समझा है कि यह कैसे काम करता है: http://blog.vincentbrouillet.com/post/2011/02/10/Database-schema-synchronisation-with-RedGate

अगर आप से पूछना चाहता

1

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

0

मैं जानता हूँ कि इस पोस्ट पुरानी है, लेकिन हम एक नया समाधान निम्न दृष्टिकोण लेता है:

  1. डेवलपर्स स्क्रिप्ट व्यक्तिगत एसक्यूएल परिवर्तन और स्रोत के लिए नियंत्रण उन्हें प्रतिबद्ध।
  2. हमारे कार्यक्रम (OneScript) परिवर्तन स्क्रिप्ट फ़ाइलों को स्रोत नियंत्रण, फ़िल्टर और प्रकार से खींचता है, और एक रिलीज स्क्रिप्ट फ़ाइल उत्पन्न करता है।
  3. उस रिलीज स्क्रिप्ट फ़ाइल को रिलीज करने के लिए डेटाबेस पर लागू किया जाता है।

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

अस्वीकरण - मैं उस कंपनी पर काम कर रहा हूं जो वनस्क्रिप्ट बनाता है।

3

मैंने हाल ही में an article में प्रवेश किया है, जो कि उपयोग की जा सकती है।

लेखक ने परीक्षण, प्रसंस्करण और स्वचालन सहित कुछ बेहतरीन निरंतर एकीकरण प्रथाओं को समझाया।

  • कई दुकानें कोड में इकाई के लिए प्रतिबद्ध के बिंदु पर परीक्षण किया जाता है

    यहाँ में महत्वपूर्ण परिणाम में से कुछ हैं। डेटाबेस के लिए, परीक्षण चरण

  • के चरण के रूप में, परीक्षण चरण चरण किसी भी सीआई/सीडी प्रक्रिया का एक महत्वपूर्ण हिस्सा है, यह सभी यूनिट परीक्षणों को एक बार में और एक क्यूए डेटाबेस के खिलाफ अनुक्रम में, विकास बनाम पसंद किया जाता है। टेस्ट लिपियों, इकाई सहित खुद को परीक्षण, भी स्रोत नियंत्रण में संस्करणीकृत जाना चाहिए, कदम बिल्ड के बिंदु पर निकाला जाता है और मार डाला
  • उत्पादन से डेटा खींच एक त्वरित उपाय के रूप में अपील कर रही है, लेकिन कभी नहीं एक अच्छा विचार
  • है सबसे अच्छा तरीका एक उपकरण या स्क्रिप्ट का उपयोग तेजी से, बार-बार और विश्वसनीय रूप से आपके लेनदेन तालिकाओं के लिए सिंथेटिक परीक्षण डेटा बनाने के लिए कर रहा है
  • मानव उपभोग के लिए मैन्युअल सारांश परिणामों का उत्पादन करने के लिए यूनिट परीक्षण चलाना स्वचालन के उद्देश्य को हरा देता है। हमें मशीन पठनीय परिणाम की आवश्यकता है, जो एक स्वचालित प्रक्रिया को निरस्त करने, शाखा और/या जारी रखने की अनुमति दे सकती है।
  • एक सीआई प्रक्रिया चलाना, जिसके लिए सभी परीक्षणों का 100% होना आवश्यक है, सीआई नहीं होने के समान है, अगर वर्कफ़्लो पाइपलाइन परमाणु रूप से विफलता पर रोक लगाने के लिए सेट किया गया है, जो इसे करना चाहिए। सुई को थ्रेड करने के लिए, परीक्षणों को थ्रेसहोल्ड में बनाया जाना चाहिए था, जो विफल होने वाले परीक्षणों के% या कुछ मामलों में, यदि कुछ उच्च प्राथमिकता परीक्षण विफल हो जाते हैं, तो एक त्रुटि उत्पन्न होगी।
  • सभी प्रक्रियाओं को आखिरकार पास या असफल होने के बूलियन परिणाम का उत्पादन करना चाहिए, लेकिन कुछ गैर-स्वचालित प्रक्रियाएं आसानी से आपके सीआई वर्कफ़्लो पाइपलाइन (उदाहरण के लिए यूनिट परीक्षण) में अपना रास्ता खोज सकती हैं। सॉफ्टवेयर किसी भी वर्कफ़्लो पाइपलाइन में प्लग-एन-प्ले होना चाहिए, ज्ञात इनपुट लेना और अनुमानित आउटपुट का उत्पादन करना - जैसे पास, असफल।
  • सीआई/सीडी प्रक्रिया विफलता पर निरस्त किया जाना चाहिए और एक अधिसूचना ईमेल तुरंत पाइपलाइन चक्र जारी रखने के लिए भेजा जाना चाहिए।
  • सीआई प्रक्रिया को फिर से चक्र नहीं करना चाहिए जब तक कि अंतिम निर्माण में कोई भी त्रुटि ठीक न हो जाए। विफलता पर, पूरी टीम को विफलता अधिसूचना मिलनी चाहिए, जिसमें जितना संभव हो सके असफल होने के बारे में कई विवरण शामिल हैं।
  • यदि किसी पाइपलाइन को 1 घंटे लगते हैं, तो पूरा करने के लिए, पूरा करने के लिए, सभी परीक्षण अंतराल सहित, सभी निर्माण अंतराल को एक घंटे से भी कम समय तक सेट किया जाना चाहिए और सभी नए कामों को कतारबद्ध किया जाना चाहिए, और अगले पर लागू होना चाहिए निर्माण।
  • कोई सादा पाठ पासवर्ड स्वचालन लिपियों
संबंधित मुद्दे