मैं एसक्यूएल सर्वर एजेंट का उपयोग गैर-डेटाबेस कार्यों को भी शेड्यूल करने के लिए कर रहा हूं - क्या यह एक बुरा विचार है?


13

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

मेरे दृष्टिकोण से, SQL एजेंट के मूल विंडोज टास्क शेड्यूलर पर कई फायदे हैं:

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

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

क्या इस तरह से SQL एजेंट पर भरोसा करना ठीक है? यदि नहीं, तो क्या मुझे किसी ऐसी कार्यक्षमता को प्राप्त करने के लिए तीसरे पक्ष के विंडोज कार्य अनुसूचक पर विचार करना चाहिए, जिसकी मुझे तलाश है?


यदि यह यहाँ के बजाय SF पर है, तो मुझे बताएं और मैं इसे वहां ले जाऊंगा, लेकिन मुझे लगा कि मैं यहां से संबंधित हूं क्योंकि मैं एक डेटाबेस टूल का उपयोग कर रहा हूं, और मुझे यह देखने में दिलचस्पी है कि क्या अन्य डीबीए / एसए एडमिट कर रहे हैं वही चीज़।
सकलैन

जवाबों:


7

व्यक्तिगत रूप से मुझे लगता है कि नौकरियों की सूची को व्यवस्थित रखने में सबसे बड़ी समस्या होगी। जहाँ तक मुझे पता है आप नौकरियों को व्यवस्थित करने के लिए फ़ोल्डर नहीं बना सकते हैं, इसलिए बड़ी संख्या बोझिल होगी। मैं इस बारे में 100% निश्चित नहीं हूं, हालांकि, चूंकि मेरे किसी भी सर्वर में एक दर्जन या अधिक नौकरियां नहीं हैं। सर्वर 2008 और बाद में टास्क शेड्यूलर बहुत आसान संगठन, आईएमओ के लिए अनुमति देता है, और सामान्य तौर पर पिछले संस्करणों की तुलना में बेहतर कार्यक्षमता है। मुझे यकीन है कि थर्ड पार्टी ऐप एक और भी बेहतर काम करेंगे। मुझे रोना होगा अगर मुझे सर्वर 2003 के कार्य अनुसूचक या का उपयोग करना पड़ा at.exe

दूसरा कैविएट जिसके बारे में मैं सोच सकता हूँ कि वह एसक्यूएल सर्वर पर बहुत अधिक भार डाल रहा होगा। एजेंट एक छोटा कार्यक्रम है, लेकिन एक लंबे या जटिल कार्य को चलाने से बहुत सारे संसाधनों का आसानी से उपभोग किया जा सकता है। वे संसाधन SQL इंजन के लिए उपलब्ध नहीं होंगे। चूंकि SQL इंजन में लगभग 80% उपलब्ध सिस्टम मेमोरी लेने के लिए प्रोग्राम किया गया है, इसलिए यह एक समस्या हो सकती है।

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

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


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

9

अपनी पिछली नौकरी में मैंने ठीक यही किया, ज्यादातर इसलिए कि नौकरियां हमारे केंद्रीय, प्राथमिक क्लस्टर से चलती थीं, जो सबसे अधिक दिखाई देने वाला सर्वर था। मैं अपने सभी निर्धारित कार्यों को सर्वर के एक समूह पर कमांड लाइन सामान की जांच करने के बजाय एक ही स्थान पर देख सकता था।

हालांकि यह काफी व्यक्तिपरक है (और इस प्रारूप में "सही" उत्तर को प्राप्त करना कठिन है), मुझे नहीं लगता कि इस दृष्टिकोण के अलावा कुछ भी गलत नहीं है, क्योंकि यह विफलता का एक बिंदु है।

यह प्रासंगिक नहीं हो सकता है यदि सभी कार्य आपस में बातचीत करते हैं, या निर्भर करते हैं, डेटाबेस सर्वर ऊपर है और SQL सर्वर सेवाएं चल रही हैं (हमारे मामले में, यह किया)।

ओह, और आपको उन मामलों के लिए त्रुटि हैंडलिंग में जोड़ने की आवश्यकता है जहां सर्वर जहां कार्य चलाने की कोशिश करता है, वह ऊपर नहीं है - यदि आपको उस सर्वर पर कार्य सेट किया गया था, तो आपको कुछ नहीं करना होगा।


मैं प्रतिक्रिया की सराहना करता हूं - मुझे लगता है कि सवाल बहुत व्यक्तिपरक है, क्योंकि या तो विधि काम हो जाती है - लेकिन मैं या तो कुछ सत्यापन की तलाश कर रहा हूं कि "हाँ, विंडोज के काम वांछित होने के लिए बहुत कुछ छोड़ देते हैं" या "नहीं, यह एक भयानक है विचार करें, यहाँ क्यों ... "हम देखेंगे कि क्या बुलबुले उठते हैं!
SqlRyan

मुझे यकीन है कि इससे पहले कि आप बहुत अधिक साँसें लें, लोग पॉवरशेल नौकरियों को पिंपल करेंगे। व्यक्तिगत रूप से मैं उन और विंडोज कार्यों को प्रबंधित करने के लिए थोड़ा अधिक थकाऊ लगता हूं, लेकिन माइलेज अलग-अलग होगा।
हारून बर्ट्रेंड

0

मैं ~ संभावना ~ Windows कार्य प्रबंधक पर SQL एजेंट ले जाएगा ... जाहिर है डेटाबेस से संबंधित कार्यों के लिए।

यदि आप बिल्कुल भी कोड कर सकते हैं, या ऐसे लोग हैं जो कोड कर सकते हैं, तो आप कंसोल ऐप्स के साथ काफी कुछ कर सकते हैं और उन्हें TopShelf (http://topshelf-project.com/) जैसे सेवा निर्माता में लपेट सकते हैं। यह एक सस्ता / हो सकता है सब कुछ के लिए एसक्यूएल एजेंट से थोड़ा डिकॉप्लिंग करने के लिए आसान हैक और यदि आप उस बिंदु पर हैं तो आपको कतार के लिए एक परत भी शुरू करना चाहिए।

व्यक्तिगत रूप से, आप इस बारे में पर्याप्त देखभाल करने के साथ-साथ अपने गोचरों के बारे में पर्याप्त जानते हैं कि मुझे लगता है कि आप ठीक हो जाएंगे। यह ऐसे लोग हैं जो परवाह नहीं करते / जानते हैं कि मुझे वास्तव में चिंता है। मुझे कोई संदेह नहीं है कि आप उचित अंतराल पर अपने समाधान का मूल्यांकन करेंगे और तदनुसार कार्य करेंगे।


-1

एक अन्य विकल्प इसके लिए एक संदेश कतार तालिका को अद्यतन करने के लिए संग्रहीत कार्यविधि के साथ अनुसूचित कार्यों के लिए एक तालिका बनाना है। तब SQL सर्वर एजेंट हर बार संग्रहीत कार्यविधि को संदेश बनाने और कार्य स्थिति को अपडेट करने के लिए कॉल करेगा। अन्य सिस्टम या तो एक SQL कनेक्शन या JSON के रूप में एक वेब एपीआई परत के माध्यम से संदेश कतार तालिका क्वेरी होगी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.