2008-11-10 20 views
8

मैं कुछ ऐसा करना चाहता हूं:मैं समानांतर में एसक्यूएल सर्वर संग्रहीत प्रक्रियाओं को कैसे चला सकता हूं?

exec sproc1 and sproc2 at the same time 
when they are both finished exec sproc3 

मैं इसे डीटीएस में कर सकता हूं। क्या ट्रांज़ेक्ट एसक्यूएल में ऐसा करने का कोई तरीका है? या बैच स्क्रिप्ट (जैसे vbs या powerhell) के साथ ऐसा करने का कोई तरीका है?

+0

यदि आप यह बताएंगे कि यह एक दिलचस्प सवाल है, तो सवाल का जवाब देना आसान हो सकता है। फिर हम तकनीक के बजाए उद्देश्य को संबोधित कर सकते थे। – dkretz

+0

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

उत्तर

4

एसपी _ शुरू _ काम

मैं इस समय एक ऐसी ही बात कर रहा हूँ, और एक ही रास्ता मैं SSIS या कुछ बाहरी खोल उपयोग कर रहा है 'सूत्र' में मेरी लोड दिनचर्या विभाजित करने के लिए से बचने के लिए मिल गया है मैन्युअल रूप से, और उसके बाद एक मास्टर स्क्वालेन्ट जॉब को आग लगती है जो बदले में बहुत से sp _ start _ job को निष्पादित करती है क्योंकि मेरे पास थ्रेड हैं। उस बिंदु से, वे सभी स्वायत्तता से चलते हैं।

यह वही नहीं है जो हम खोज रहे हैं, लेकिन नतीजा वही है। यदि आप उप नौकरियों के लिए नौकरी की स्थिति का परीक्षण करते हैं, तो आप स्पोक 3 की अपनी सशर्त शुरुआत भी कार्यान्वित कर सकते हैं।

8 कोर में बात करता है, तो हम उन्हें एक बार में सभी का उपयोग नहीं कर सकते हैं क्या है?

+0

यह बहुत अच्छा है! जब प्रत्येक धागा खत्म होता है तो मैं प्रत्येक अन्य नौकरियों की जांच कर सकता हूं, इसलिए अंतिम धागा खत्म करने के लिए अगली नौकरी बंद कर सकते हैं। – cindi

5

आप एक CLR संग्रहीत प्रक्रिया है कि (सी # का उपयोग कर) अपने स्वयं के धागे पर पहले दो कहेंगे, और फिर ब्लॉक जब तक दोनों पूरा कर रहे हैं ... तो तीसरा चलाने बना सकते हैं।

क्या आप अपनी स्थिति में सीएलआर स्पॉक्स का उपयोग करने में सक्षम हैं? यदि ऐसा है, तो मैं अधिक जानकारी के लिए इस उत्तर को संपादित कर दूंगा।

+0

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

+0

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

1

क्या आपको पूरी तरह से समानांतर में निष्पादित करने के लिए दोनों एसपी की आवश्यकता है?

भीतर एक भी सपा सरल CRUD बयान के साथ

, मैंने पाया एसक्यूएल एस निर्धारण जो उनमें से समानांतर में चलाया जा सकता है और ऐसा करने के का एक बहुत अच्छा काम करता है। मैंने एसक्यूएल एस रन 2 एसपी को समानांतर में कभी नहीं देखा है अगर दोनों को टी-एसक्यूएल कथन से अनुक्रमिक रूप से कहा जाता है, तो यह भी नहीं पता कि यह भी संभव है या नहीं।

अब, क्या डीटीएस वास्तव में समानांतर में निष्पादित करते हैं? यह इसे क्रमशः क्रमशः निष्पादित कर सकता है, फिर अंतिम खत्म होने के बाद तीसरे एसपी को कॉल करता है।

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

+0

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

0

आप एसएसआईएस का उपयोग कर सकते हैं। इसका लाभ यह है कि पैकेज को SQL सर्वर में संग्रहीत किया जा सकता है और आसानी से वहां निर्धारित किया जा सकता है।

PowerShell से या बस किसी भी बाहरी पटकथा भाषा के बारे में, आप एसक्यूएल कमांड लाइन osql या sqlcmd उपयोग कर सकते हैं। इस तकनीक का उपयोग xp_cmdshell का उपयोग करके खोलकर SQL सर्वर पर शेड्यूल करने के लिए भी किया जा सकता है।

+0

एसएसआईएस = डीटीएस, सवाल यह था कि डीटीएस से बचने के लिए स्पष्ट रूप से आप एक स्क्रिप्टिंग भाषा से SQL चला सकते हैं, सवाल यह था कि समानांतर में SQL स्टेटमेंट कैसे चलाएं। – cindi