2012-05-03 25 views
5

के साथ SQL स्क्रिप्ट निष्पादित करें मेरे पास एक C# .net एप्लिकेशन है जिसे कई क्लाइंटों के लिए अलग से अलग किया गया है, एक बार में हम कुछ नई सुविधाएं जोड़ते हैं या कुछ बग ठीक करते हैं और अक्सर डीबी में परिवर्तन करते हैं। मैं अपने क्लाइंट पीसी पर exe अद्यतन करने के लिए एक बार तैनाती दृष्टिकोण क्लिक करें। SQL सर्वर इंस्टेंस उनके सिस्टम पर स्थापित किया गया है।.net निष्पादन योग्य

मैं जानना चाहता हूं कि मैं प्रत्येक एक्सई अद्यतन के साथ अपने एसक्यूएल डेटाबेस को कैसे अपडेट कर सकता हूं।

कृपया ध्यान रखें कि यह क्लाइंट संस्करण 2 पर काम कर रहा है और कभी भी संस्करण 3 में अपडेट नहीं किया गया है, लेकिन जब संस्करण 4 जारी किया जाता है, तो वह एप्लिकेशन अपडेट करता है। ऐसे मामले में मुझे अपने डेटाबेस पर दो स्क्रिप्ट निष्पादित करने की आवश्यकता है। 3 संस्करण के लिए एक और वर्तमान संस्करण जो है 4.

धन्यवाद

उत्तर

2

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

+0

तो मैं तो मेरे निष्पादन में डेटाबेस के सभी लिपियों रखने की जरूरत है जब भी उपयोगकर्ता exe अद्यतन उनके संबंधित स्क्रिप्ट उपलब्ध होना चाहिए। – MegaMind

+0

हां, तो आप डेटाबेस में एक झंडा संस्करण भी जोड़ना होगा :) – ykatchou

0

आप sqlcmd की कोशिश कर सकते हैं और बस डीबी अद्यतन के साथ आप आवेदन के भीतर से exe फोन के लिए अन्य।

0

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

उदाहरण हैं:

0

मैं दो घटक बना लिया है कि एक निश्चित एसक्यूएल डीबी के साथ ही एक एसक्यूएल समाधान scruipt फ़ाइलों से युक्त फ़ोल्डर का विश्लेषण करती है

1.

एक WinForms अनुप्रयोग: इस मुद्दे से निपटने के लिए। यह तब स्क्रिप्ट फ़ाइलों को SQL ऑब्जेक्ट्स में जोड़ता है और मुझे विभिन्न "स्क्रिप्ट फ़ाइलों" के लिए निष्पादन आदेश वाला "Manifest.xml" बनाने देता है।

तालिकाओं के लिए स्क्रिप्ट फ़ाइलों में तालिका संरचना को अपग्रेड करने के लिए प्रति-संस्करण निर्देश शामिल हैं।

बिल्डर तब प्रासंगिक स्क्रिप्ट फ़ाइलों को मैनिफेस्ट के साथ एक निश्चित स्थान पर कॉपी करता है। आम तौर पर मैं अपने ऐप के साथ उनको कॉपी करता हूं यदि मैं अपने ऐप-फ़ोल्डर को ओवरक्रोइड करने के बारे में चिंतित नहीं हूं। अन्यथा मैं उन्हें एक पासवर्ड संरक्षित 7-ज़िप पर संपीड़ित करता हूं।

2.

कि unpacks (यदि आवश्यक) और प्रकट कार्यान्वित एक कमांड लाइन अनुप्रयोग। वास्तविक कार्य एक अलग वर्ग पुस्तकालय में किया जाता है जिसे मेरे ऐप्स में एकीकृत किया जा सकता है।

तब मेरे एप्लिकेशन में जब भी अपने appversion> dbversion मैं उन्नयन चलाते हैं।

सेटअप जहां केवल एक मचान और एक सिंगल ग्राहक पर उत्पादन सेटअप और आम तौर पर कोई एप्लिकेशन शामिल मैं मैन्युअल रूप से स्टैंड-अलोन CLI एप्लिकेशन का उपयोग करेंगे में। यह अपडेट पुश करने के लिए एक आसान तरीका है, खासकर यदि आप 20 बार देखा गया संशोधित और वास्तव में नकल की तरह नहीं लग रहा है/उन सब को एसक्यूएल मैनेजमेंट स्टूडियो में चिपकाने: p