2011-05-28 16 views
6

समस्या: वर्तमान में हमारे पास पिछले 10 वर्षों में विभिन्न आवश्यकताओं के लिए विभिन्न डेवलपर्स द्वारा लिखे गए कई संग्रहीत प्रक्रियाएं (10,000 लाइन तक बहुत लंबी हैं) हैं। अब उन जटिल/लंबी संग्रहीत प्रक्रियाओं को प्रबंधित करने के लिए मुश्किल हो गई है (बिना उचित दस्तावेज़ीकरण के)।SQL सर्वर संग्रहीत प्रक्रिया रूपांतरण एसएसआईएस पैकेज

हम उन संग्रहीत प्रक्रिया को एसएसआईएस ईटीएल पैकेज में स्थानांतरित करने की योजना बना रहे हैं।

क्या किसी ने ऐसा किया है? यदि हां, तो एक दृष्टिकोण क्या लेना चाहिए।

सराहना करते हैं कि कोई भी संग्रहीत प्रक्रिया को एसएसआईएस ईटीएल पैकेज में परिवर्तित करने के दृष्टिकोण पर सलाह प्रदान कर सकता है।

धन्यवाद

+0

प्रक्रियाओं को एसएसआईएस पैकेज में बदलने में आपका अंतिम लक्ष्य क्या है? ईटीएलिंग के लिए संग्रहीत प्रक्रियाएं हैं? –

+0

हाँ संग्रहीत प्रक्रिया मुख्य रूप से ईटीएल ऑपरेशन कर रही है और डेटा को 1 वर्ग सर्वर से दूसरे एसक्यूएल सर्वर पर ले जा रही है। –

+0

कुछ डेटा एकीकरण विकल्पों को देखा गया जैसे: एसएसआईएस, सेवा ब्रोकर, स्ट्रीमइन्सइट .... संग्रहीत प्रक्रिया की 10,000 लाइनों को कई प्रबंधनीय पैकेजों में परिवर्तित करने के तरीके को हल करने के लिए –

उत्तर

5

मैं ऐसा करने के बाद से पहले, और क्या मेरी टीम के लिए अच्छी तरह से काम संवर्द्धित refactor, मूल स्रोत के साथ शुरू, और फिर रिफैक्टरिंग प्रयास पुनरावृत्ति करने के लिए किया गया था।

पहला कदम में संग्रहीत प्रक्रिया तर्क modularize एसक्यूएल कार्य है कि हम एक साथ श्रृंखलित निष्पादित करने के लिए प्रयास करने के लिए किया गया था। प्रत्येक कार्य का परीक्षण और अनुमोदन किया गया था, फिर हम एकीकृत करेंगे और सुनिश्चित करेंगे कि नई प्रक्रिया विरासत प्रक्रियाओं के परिणामों से मेल खाती है।

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

प्रत्येक रिफैक्टरिंग अलग-अलग इकाई परीक्षण किया गया था और उसके बाद एकीकरण सुनिश्चित करना है कि समग्र प्रक्रिया उत्पादन अभी भी पुराना प्रक्रियाओं की तरह व्यवहार का परीक्षण किया।

+0

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

+0

@ लोकेश यह पहला कदम है। कार्यों में मोनोलिथिक प्रो को तोड़ने पर, यह लगभग हमेशा (मेरे लिए, कम से कम) स्पष्ट हो गया कि एक कार्य (या कार्यों की श्रृंखला) का अनुवाद देशी एसएसआईएस परिचालनों में किया जा सकता है। यदि आप एसएसआईएस कार्य में एसक्यूएल टास्क को और कम नहीं कर सकते हैं, तो आप (उस समय।) मेरे दर्शन [स्पॉल्स्की के साथ संरेखित] (http://www.joelonsoftware.com/articles/fog0000000069.html) है, जिसमें आपका विरासत कोड काम करता है, और पुनर्लेखन के बजाए इसे पुन: सक्रिय करना एक अच्छा अभ्यास है। यह दृष्टिकोण आपको परिणामों को बहुत तेज़ी से देखने देता है, और भागों और पूरे परीक्षणों पर जोर देता है। – arcain

3

मैं निम्नलिखित चरणों का सुझाव है:

  1. विश्लेषण संग्रहित प्रक्रियाओं स्रोतों और स्थलों की सूची की पहचान। उदाहरण के लिए: यदि संग्रहित प्रक्रिया dbo.TransferOrders तालिका dbo.Order से dbo.OrderHistory पर डेटा ले जाती है। फिर आपका स्रोत dbo.Order होगा और गंतव्य dbo.OrderHistory होगा।

  2. के बाद आप स्रोतों और स्थलों की सूची, समूह के लिए भी स्रोत/गंतव्य से अपने पसंद के अनुसार संग्रहित प्रक्रियाओं का प्रयास करें। पता लगाने के लिए

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

  4. कोशिश संग्रहित प्रक्रियाओं के भीतर निर्भरता की पहचान करने और एक पदानुक्रम तैयार करने के लिए। इससे पैकेज को उचित क्रम में पैकेज में रखने में मदद मिलेगी।

  5. तालिका नामित dbo.Table1 5 अलग अलग तालिकाओं को आबाद करने की है, तो आप। मैं उन्हें एक पैकेज में रखने की सलाह दूंगा। भले ही यह डेटा जनसंख्या 5 अलग-अलग संग्रहित प्रक्रियाओं द्वारा की जा रही है, आपको 5 पैकेजों के लिए जाने की आवश्यकता नहीं है। फिर भी, यह फिर से आपके व्यापार परिदृश्य पर निर्भर करता है।

  6. एसएसआईएस परियोजना समाधान में उनके भीतर कई पैकेज हो सकते हैं और डेटा स्रोतों का पुन: उपयोग कर सकते हैं। आप अपने मौजूदा प्रश्नों को चलाने के लिए नियंत्रण प्रवाह कार्य पर उपलब्ध Execute SQL task का उपयोग कर सकते हैं लेकिन मैं अनुशंसा करता हूं कि आप एसएसआईएस में उपलब्ध कुछ अच्छे परिवर्तन कार्यों को भी देखें। मैंने उन्हें अपने प्रोजेक्ट में इस्तेमाल किया है और वे ईटीएल संचालन के लिए अच्छी तरह से काम करते हैं।

इन चरणों को एक समय में एक संग्रहीत प्रक्रिया में देखकर किया जा सकता है। आपको एक बार में उन सभी के माध्यम से जाना नहीं है।

कृपया कुछ उदाहरण देखें जो मैंने अन्य स्टैक ओवरफ़्लो प्रश्नों में दिए हैं। इससे आपको एसएसआईएस के साथ क्या हासिल किया जा सकता है इसका एक विचार देने में मदद करनी चाहिए।

Copying data from one SQL table to another

Logging feature available in SSIS

Loading a flat file with 1 million rows into SQL tables using SSIS

आशा है कि मदद करता है।

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