दिलचस्प पोस्ट
जावास्क्रिप्ट फंक्शन ऑब्जेक्ट्स के गुण जावा एसई / ईई / एमई के बीच का अंतर? ओपनसीवी में कैमरा कैप्चर रिज़ॉल्यूशन बढ़ाना C ++ में संदर्भ द्वारा एक पॉइंटर पास करने का कारण है? क्या सी # थ्रेड वास्तव में एक मान को कैश कर सकता है और अन्य थ्रेड्स पर उस मान में परिवर्तनों को अनदेखा कर सकता है? Google मैप्स टुकड़ा एक टुकड़ा के अंदर शून्य लौट रहा है किसी विशिष्ट फ़ॉन्ट और फ़ॉन्ट आकार के टेक्स्ट स्ट्रिंग की चौड़ाई की गणना कैसे करें? AngularJS में कीप्रेस इवेंट का उपयोग कैसे करें? MongoDB BSON दस्तावेज़ आकार सीमा को समझना सीएसएस के साथ समान ऊंचाई कॉलम यह .setState राज्यों को विलय नहीं कर रहा है जैसा कि मैं उम्मीद करता हूं इस openmp कोड में विभाजन गलती क्यों हो रही है? स्क्रॉल करने योग्य जेबेट के साथ एक जेपीनल को प्रिंट करना स्विफ्ट – डिवाइस का आईपी पता प्राप्त करें MySQL संग्रहीत कार्यविधियों का उपयोग उनको या उनका उपयोग करने के लिए नहीं

क्या आप अपने डेटाबेस आइटम के लिए स्रोत नियंत्रण का उपयोग करते हैं?

मुझे लगता है कि मेरी दुकान का एक छेद है क्योंकि हमारे डेटाबेस स्कीमा परिवर्तन के संस्करण के लिए हमारे पास ठोस प्रक्रिया नहीं है हम बहुत सारे बैकअप करते हैं, इसलिए हम अधिक या कम कवर किए गए हैं, लेकिन इस तरह से रक्षा के अपने अंतिम पंक्ति पर भरोसा करने के लिए यह बुरा व्यवहार है।

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

हालांकि, मुझे पता है कि कहानी कैसे जाती है कुछ समय पहले ही बात की बात है कि चीजों को सिर्फ गलत बताया जाता है और कुछ गायब हो जाता है।

क्या इस के लिए कोई सर्वोत्तम अभ्यास है? कुछ रणनीतियां जो आपके लिए काम करती हैं

वेब के समाधान से एकत्रित समाधान "क्या आप अपने डेटाबेस आइटम के लिए स्रोत नियंत्रण का उपयोग करते हैं?"

अवश्य पढ़ें संस्करण नियंत्रण के तहत अपने डेटाबेस प्राप्त करें के स्कॉट एलेन की पोस्ट की श्रृंखला की जांच करें

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

खुद को डेटाबेस? नहीं

ऐसी स्क्रिप्ट जो उन्हें बनाते हैं, जिसमें स्थिर डेटा सम्मिलित होते हैं, संग्रहित प्रक्रियाएं और जैसे; बेशक। वे पाठ फ़ाइलें हैं, वे प्रोजेक्ट में शामिल हैं और इन्हें और बाकी सभी की तरह चेक आउट किया जाता है

एक आदर्श दुनिया में आपका डाटाबेस प्रबंधन उपकरण ऐसा करेगा; लेकिन आपको इसके बारे में अनुशासित होना है

मुझे रेल सक्रियण रिकार्ड माइग्रेशन पसंद है I यह डीएमएल को रूबी लिपि में सारणित करता है जो कि आपके स्रोत भंडार में आसानी से संस्करण हो सकता है।

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

डीबी में पटरियों के पास एक 'संस्करण' टेबल भी है जो पिछले प्रयुक्त माइग्रेशन का ट्रैक रखता है। आप आसानी से ऐसा ही कर सकते हैं

स्रोत नियंत्रण का उपयोग करके डेटाबेस परिवर्तनों के प्रबंधन के लिए LiquiBase देखें।

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

if [ $VERSION \< '8.0.108' ] ; then psql -U cosuser $dbName << EOF8.0.108 BEGIN TRANSACTION; -- -- Remove foreign key that shouldn't have been there. -- PCR:35665 -- ALTER TABLE migratorjobitems DROP CONSTRAINT migratorjobitems_destcmaid_fkey; -- -- Increment the version UPDATE sys_info SET value = '8.0.108' WHERE key = 'DB VERSION'; END TRANSACTION; EOF8.0.108 fi if [ $VERSION \< '8.0.109' ] ; then psql -U cosuser $dbName << EOF8.0.109 BEGIN TRANSACTION; -- -- I missed a couple of cases when I changed the legacy playlist -- from reporting showplaylistidnum to playlistidnum -- ALTER TABLE featureidrequestkdcs DROP CONSTRAINT featureidrequestkdcs_cosfeatureid_fkey; ALTER TABLE featureidrequestkdcs ADD CONSTRAINT featureidrequestkdcs_cosfeatureid_fkey FOREIGN KEY (cosfeatureid) REFERENCES playlist(playlistidnum) ON DELETE CASCADE; -- ALTER TABLE ticket_system_ids DROP CONSTRAINT ticket_system_ids_showplaylistidnum_fkey; ALTER TABLE ticket_system_ids RENAME showplaylistidnum TO playlistidnum; ALTER TABLE ticket_system_ids ADD CONSTRAINT ticket_system_ids_playlistidnum_fkey FOREIGN KEY (playlistidnum) REFERENCES playlist(playlistidnum) ON DELETE CASCADE; -- -- Increment the version UPDATE sys_info SET value = '8.0.109' WHERE key = 'DB VERSION'; END TRANSACTION; EOF8.0.109 fi 

मुझे यकीन है कि ऐसा करने का एक बेहतर तरीका है, लेकिन यह मेरे लिए अभी तक काम किया है।

हाँ। कोड कोड है अंगूठे का मेरा नियम यह है कि मुझे किसी विकास या उत्पादन मशीन को देखने के बिना, आवेदन को खरोंच से बनाने और तैनात करने में सक्षम होना चाहिए

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

मेरा मानना ​​है कि यह नाएनट / क्रूज़ कंट्रोल के साथ किया गया था

हां, मुझे लगता है कि यह आपके डेटाबेस के संस्करण के लिए महत्वपूर्ण है डेटा नहीं, लेकिन कुछ के लिए स्कीमा

रूबी ऑन रेल में, यह "माइग्रेशन" के साथ ढांचे द्वारा नियंत्रित किया जाता है जब भी आप डीबी को बदलते हैं, तो आप स्क्रिप्ट बनाते हैं जो परिवर्तनों पर लागू होता है और इसे स्रोत नियंत्रण में जांचता है।

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

विजुअल स्टूडियो में नई डाटाबेस प्रोजेक्ट स्रोत नियंत्रण और परिवर्तन स्क्रिप्ट प्रदान करता है।

उनके पास एक अच्छा उपकरण है जो डेटाबेस की तुलना करता है और एक ऐसी स्क्रिप्ट उत्पन्न कर सकता है जो कि दूसरे की स्कीमा को दूसरे में बदल देती है, या दूसरे से मेल खाने के लिए डेटा को एक में बदलता है

डीबी स्कीमा "बहुत ही छोटे। एसक्यूएल फ़ाइलों को बनाने के लिए" कटा हुआ "है, एक डीडीएल कमांड जो डीबी के वर्णन करता है।

+ टॉम


अतिरिक्त जानकारी 2008-11-30

मैं इसे पिछले साल के डेवलपर के रूप में इस्तेमाल कर रहा हूं और वास्तव में इसे पसंद करता हूं। यह मेरे देव कार्य को उत्पादन के साथ तुलना करना और प्रकाशन के लिए उपयोग करने के लिए एक स्क्रिप्ट उत्पन्न करना आसान बनाता है। मुझे नहीं पता कि क्या इसमें ऐसी सुविधाएं नहीं हैं जो "उद्यम-प्रकार" परियोजनाओं के लिए डीबीए की आवश्यकता होती है

चूंकि स्कीमा SQL फाइल्स में "कटा हुआ" है, इसलिए स्रोत नियंत्रण ठीक काम करता है।

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

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

डीबी परियोजनाएं एक बहुत शक्तिशाली उपकरण हैं वे न केवल स्क्रिप्ट उत्पन्न करते हैं बल्कि उन्हें तत्काल लागू कर सकते हैं अपने उत्पादन डीबी को इसके साथ नष्ट न करें। 😉

मैं वास्तव में वी.एस. डीबी परियोजनाओं को पसंद करता हूं और मैं अपने सभी डीबी परियोजनाओं के आगे जाकर इस उपकरण का उपयोग करने की उम्मीद करता हूं।

+ टॉम

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

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

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

आप अधिक जानकारी के लिए इस लेख को पढ़ सकते हैं: http://solutioncenter.apexsql.com/sql-source-control-reduce-database-development-time/

मैं स्क्रिप्ट / अपडेट लिपियों और एक स्क्रिप्ट को सहेज कर करती हूं जो नमूनाकृत करता है

हां, हम अपने एसक्यूएल को हमारे बिल्ड के हिस्से के रूप में रखकर करते हैं- हम DROP.sql, CREATE.sql, USERS.sql, VALUES.sql और संस्करण नियंत्रण इन रखते हैं, इसलिए हम किसी टैग किए गए संस्करण में वापस लौट सकते हैं।

हमारे पास चींटी कार्य भी हैं, जो जब जरूरत पड़ने पर डीबी को वापस कर सकते हैं।

इसके अलावा, एसक्यूएल को इसके साथ अपने स्रोत कोड के साथ टैग किया जाता है।

हम स्रोत को हमारे सभी डीबस निर्मित ऑब्जेक्ट्स को नियंत्रित करते हैं। और सिर्फ डेवलपर्स को ईमानदार रखने के लिए (क्योंकि आप उन्हें स्रोत नियंत्रण में बिना वस्तुएं बना सकते हैं), हमारे डीबीएस समय-समय पर कुछ भी स्रोत नियंत्रण में नहीं दिखते हैं और यदि वे कुछ भी पाते हैं, तो यह पूछे बिना छोड़कर कि यह ठीक है

मैंने कभी किसी प्रोजेक्ट पर उपयोग की सबसे सफल योजना में बैकअप और अंतर एसक्यूएल फ़ाइलों को जोड़ लिया है। असल में हम प्रत्येक रिलीज के बाद हमारे डीबी का बैकअप लेते हैं और एसक्यूएल डंप करते हैं ताकि हम खरोंच से रिक्त स्कीमा तैयार कर सकें, अगर हमें इसके लिए भी आवश्यक हो। फिर कभी भी आपको डीबी में बदलाव करने की आवश्यकता होती है, तो आप संस्करण नियंत्रण के तहत एसक्यूएल निर्देशिका में एक बदलाव स्क्रिप्ट जोड़ देंगे। हम हमेशा अनुक्रम संख्या या दिनांक को फ़ाइल नाम में लागू करेंगे, इसलिए पहला परिवर्तन 01_add_created_on_column.sql जैसा होगा, और अगली स्क्रिप्ट 02_added_customers_index होगी। हमारी सीआई मशीन इनकी जांच करेगी और उन्हें क्रमशः डीबी की एक नई कॉपी पर चलाएगी जो बैकअप से बहाल हो गई थी।

हमारे पास कुछ स्क्रिप्ट भी थे जो कि devs एक स्थानीय कमांड के साथ वर्तमान संस्करण में अपने स्थानीय डीबी को पुन: प्रारंभ करने के लिए उपयोग कर सकते थे।

मेरे डीबी को बेर मेटल से पुन: बनाने के लिए मेरे पास सब कुछ जरूरी है, माइनस डेटा ही। मुझे यकीन है कि यह करने के लिए बहुत सारे तरीके हैं, लेकिन मेरी सभी लिपियों और इस तरह से तोड़फोड़ में बंद हो जाता है और हम डीबी संरचना को फिर से बना सकते हैं और इस तरह सब कुछ हटाकर और एक इंस्टॉलर चलाने से।

मैं आमतौर पर प्रत्येक परिवर्तन के लिए एक एसक्यूएल स्क्रिप्ट का निर्माण करता हूं, और दूसरा उन परिवर्तनों को वापस करने के लिए, और उन लिपियों को संस्करण नियंत्रण के तहत रखता हूं।

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

हाँ, इससे पहले कि आप कहते हैं, यह रेल सामान और अन्य लोगों के समान है, लेकिन यह बहुत अच्छी तरह से काम करता है, इसलिए मुझे यह स्वीकार करने में कोई दिक्कत नहीं है कि मैंने इस विचार को बेशर्मी से उठाया है 🙂

मैं एसक्यूएल स्क्रिप्ट का उपयोग MySQL Workbech से निर्यात किया है, फिर उनका "निर्यात एसक्यूएल अल्टर" कार्यक्षमता का उपयोग करते हुए मैं स्क्रिप्ट (गिनती की संख्या) और उन दोनों के बीच के बदलावों को लागू कर सकते हैं जो बदल स्क्रिप्ट बनाने की एक श्रृंखला के साथ समाप्त

3.- एसक्यूएल एल्टर स्क्रिप्ट को निर्यात करें आम तौर पर आपको मॉडल में किए गए अपने परिवर्तनों को प्रतिबिंबित करने के लिए अब आपको वैकल्पिक टैब स्टेटमेंट लिखना होगा। लेकिन आप स्मार्ट हो सकते हैं और कार्यबेनच आपके लिए कड़ी मेहनत करते हैं। बस मुख्य मेनू से फ़ाइल -> निर्यात -> अग्रेषित इंजीनियर एसक्यूएल लिटर स्क्रिप्ट का चयन करें

यह आपको SQL CREATE फ़ाइल को निर्दिष्ट करने के लिए संकेत देगा, जिसमें वर्तमान मॉडल की तुलना की जानी चाहिए।

चरण 1 से एसक्यूएल बनाएँ स्क्रिप्ट का चयन करें। उपकरण फिर आप के लिए वैकल्पिक तालिका स्क्रिप्ट जनरेट करेंगे और आप इसे अद्यतित करने के लिए अपने डेटाबेस के विरुद्ध इस स्क्रिप्ट को निष्पादित कर सकते हैं।

आप यह MySQL क्वेरी ब्राउज़र या mysql क्लाइंट का उपयोग कर सकते हैं। वॉयला! आपका मॉडल और डेटाबेस अब सिंक्रनाइज़ कर दिया गया है!

स्रोत: MySQL कार्यक्षेत्र समुदाय संस्करण: स्कीमा सिंक्रनाइज़ेशन के लिए गाइड

पाठ्यक्रम के सभी स्क्रिप्ट संस्करण नियंत्रण के अंदर हैं।

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

डेटाबेस मॉडल के बारे में बहुत चर्चा हुई है, लेकिन हम आवश्यक डेटा को एसक्यूएल फाइलों में भी रखते हैं।

उदाहरण के लिए, उपयोगी होने के लिए आपके एप्लिकेशन को इंस्टॉल करने की आवश्यकता हो सकती है:

 INSERT INTO Currency (CurrencyCode, CurrencyName) VALUES ('AUD', 'Australian Dollars'); INSERT INTO Currency (CurrencyCode, CurrencyName) VALUES ('USD', 'US Dollars'); 

हमारे पास एक फ़ाइल होगी जिसे currency.sql । निर्माण की प्रक्रिया में एक मैन्युअल कदम के रूप में, हम पिछले currency.sql को नवीनतम से तुलना करते हैं और एक अपग्रेड स्क्रिप्ट लिखते हैं।

हम हमारे डेटाबेस के आसपास के संस्करण और स्रोत को नियंत्रित करते हैं:

  • डीडीएल (बनाना और बदलता है)
  • डीएमएल (संदर्भ डेटा, कोड, आदि)
  • डेटा मॉडल परिवर्तन (ईआरविन या ईआर / स्टूडियो का उपयोग करते हुए)
  • डेटाबेस कॉन्फ़िगरेशन परिवर्तन (अनुमतियां, सुरक्षा वस्तुएं, सामान्य कॉन्फ़िगरेशन परिवर्तन)

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

मेरा मानना ​​है कि हर डीबी स्रोत नियंत्रण के अधीन होना चाहिए, और डेवलपर्स को अपने स्थानीय डाटाबेस को खरोंच से बनाने का एक आसान तरीका होना चाहिए। डेटाबेस प्रोफेशनल के लिए विजुअल स्टूडियो द्वारा प्रेरित, मैंने एक ओपन सोर्स टूल बनाया है जो स्क्रिप्ट एमएस एसक्यूएल डेटाबेस, और प्रदान करता है और अपने स्थानीय डीबी इंजन में उन्हें तैनात करने का आसान तरीका है। http://dbsourcetools.codeplex.com/ पर आज़माएं मस्ती करो, – नाथन

यदि आपका डेटाबेस एसक्यूएल सर्वर है, तो आपके पास सिर्फ उस समाधान का समाधान हो सकता है जिसे आप ढूंढ रहे हैं। SQL स्रोत नियंत्रण 1.0 को अभी जारी किया गया है।

http://www.red-gate.com/products/SQL_Source_Control/index.htm

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

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

मैं अपने सभी डेटाबेस स्कीमा परिवर्तनों को संस्करण नियंत्रण के लिए स्कीमाबैंक का उपयोग करता हूं:

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

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

वैसे, वे हमें संस्करण नियंत्रण पेड़ के भीतर शाखाएं बना देते हैं ताकि मैं एक स्टेजिंग के लिए और उत्पादन के लिए एक बनाए रख सकूं। और एक सैंडबॉक्स कोडिंग के लिए

संस्करण नियंत्रण n बदलाव प्रबंधन के साथ एक बहुत साफ वेब आधारित स्कीमा डिजाइन उपकरण।

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

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

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

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

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

आपके लिए शुभकामनाएं, उतनी ही जल्दी ही आप जितनी जल्दी कोशिश करेंगे, उतनी ही आपके पास अपने मुद्दों को सुलझाने होंगे।

मैंने http://dbdeploy.com/ पर ThoughtWorks से dbdeploy उपकरण का उपयोग किया है यह माइग्रेशन लिपियों के इस्तेमाल को प्रोत्साहित करता है। प्रत्येक रिलीज, हम समझदारी को कम करने और डीबीए को परिवर्तनों को 'आशीष' करने की अनुमति देने के लिए एक एकल फ़ाइल में परिवर्तन स्क्रिप्ट को समेकित करते हैं।

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

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

एक उत्कृष्ट उपकरण यहां लिंक है: http://www.sqldelta.com/

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

रेडगेट डेटा स्नैपशॉट भी बनाते हैं, जबकि मैंने उनके साथ व्यक्तिगत रूप से काम नहीं किया है, वे उतना ही मजबूत हैं

एफवाईआई यह भी कुछ दिनों पहले दाना द्वारा लाया गया था … संग्रहीत प्रक्रिया / स्रोत नियंत्रण में डीबी स्कीमा