2011-11-11 4 views
5

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

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

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

उत्तर

1

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

वैसे भी आप डेटाबेस के कुछ "सत्यापन" बना सकते हैं लेकिन इसमें कुछ समय लगेगा। यदि आप ईडीएमएक्स फ़ाइल का उपयोग कर रहे हैं तो आप इसे एक्सएमएल के रूप में खोल सकते हैं और SSDL भाग पढ़ सकते हैं जो सभी अपेक्षित टेबल, कॉलम, रिलेशनशिप, विचार (एसईसीएल एसक्यूएल प्रश्नों के रूप में), संग्रहित प्रक्रियाओं और कार्यों का वर्णन करता है। आप इस XML भाग को पार्स कर सकते हैं और सिस्टम डेटाबेस दृश्यों का उपयोग कर सकते हैं (sys.tables, sys.columns, ...) यह क्वेरी करने के लिए कि क्या ये ऑब्जेक्ट डेटाबेस में मौजूद हैं।

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

+1

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

संबंधित मुद्दे