व्यवसाय अनुप्रयोग के लिए हर 5 मिनट में MSDB नौकरी चलाने के लिए विक्रेता चाहता है


15

हमारे पास एक 3 पार्टी विक्रेता है जो 2 अलग-अलग अनुप्रयोगों को एकीकृत करने की कोशिश कर रहा है, जहाँ दोनों डीबी हमारे SQL सर्वर इंस्टेंस पर 150+ अन्य DBs के साथ रहते हैं, और वे हर 5 मिनट में 2 अलग-अलग अनुप्रयोगों को "सिंक" करने के लिए एक MSDB नौकरी बनाना चाहते हैं (पहली बार में वे इसे हर मिनट चलाना चाहते थे)।

मेरा प्रारंभिक कूबड़ यह है कि वे इसके बजाय किसी एप्लिकेशन शेड्यूल में Windows शेड्यूल की गई नौकरी के साथ, या शायद एक भयानक ट्रिगर (जो हम आमतौर पर इस तरह की स्थितियों में सहारा लेते हैं) में करना चाहिए।

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

मेरे पास एक और मुद्दा यह है कि अब मुझे इस विक्रेता को केवल "डीबीओ" के बजाय "डीएसओ" के अधिकार पर "वाइस" अधिकार देने की आवश्यकता है, जब वे अपने जीयूआई के माध्यम से अपग्रेड करते हैं और आशा करते हैं कि वे उस उदाहरण को नहीं उड़ाएंगे जहां मेरा मिशन महत्वपूर्ण है DBs समेकन के डाउनसाइड्स में से एक हैं)

मुझे लगता है कि मैं उन्हें एक और "पृथक" उदाहरण है जहाँ हम सभी विक्रेताओं कि अच्छा नहीं खेलते हैं डाल पर डाल सकते हैं, लेकिन तब हम नए एसक्यूएल उदाहरण के लिए बात करने के लिए अनुप्रयोग (पुन: कॉन्फ़िगर जरूरत विलाप दुर्भाग्य से इस मामले में तुच्छ नहीं)।

विक्रेता ने पहले से ही मेरी चिंताओं पर जोर दिया कि कैसे ट्रिगर खराब हो रहे हैं। तो, मैं इस पर थोड़ा "googled" और खाली आया। क्या किसी ने कोई भी लिंक "आधिकारिक तलाश" में देखा है कि यह एक बुरा विचार है और मैं उन्हें इसका उल्लेख कर सकता हूं? या मुझे उनके दृष्टिकोण को गले लगाना चाहिए?

मुझे विश्वास नहीं है कि मैंने कभी मदद के लिए पूछने से पहले एक एसक्यूएल फोरम में पोस्ट किया है, इसलिए उम्मीद है कि मेरी जांच ठीक से तैयार की गई है।

संपादित करें: हम SQL Server 2008 एंटरप्राइज़ R2 x 64 SP1 चला रहे हैं (यह इंगित करने के लिए धन्यवाद कि मैं संस्करण का उल्लेख करना भूल गया हूँ!)। हम्म, उम्मीद है कि जब हम एक नए संस्करण में जाते हैं तो उन्हें अपनी MSDB अपग्रेड स्क्रिप्ट को बदलने की आवश्यकता नहीं होती है।

आपके समय के लिए धन्यवाद! धनी


अच्छी तरह से यह शब्द है। शायद आप अपने द्वारा उपयोग किए जाने वाले विशिष्ट संस्करण के साथ एक टैग जोड़ सकते हैं (और संस्करण के प्रश्न में भी उल्लेख कर सकते हैं।) सुनिश्चित नहीं हैं कि मानक और उद्यम के बीच अंतर हैं, लेकिन यह प्रासंगिक हो सकता है।
ypercube y

आप हमेशा अपने स्वयं के इतिहास को शुद्ध करने के लिए काम बता सकते हैं (आप MSDB तालिकाओं से काफी आसानी से हटा सकते हैं), इसलिए "इतिहास तालिकाओं की धीमी क्वेरी" एक कारक नहीं होना चाहिए। मैं बाहरी प्रक्रिया को संभालने देने से अधिक घबरा जाता हूँ, ठीक है क्योंकि मैं इतिहास पर कम नियंत्रण रखता हूँ। इसके अलावा अगर 5 मिनट "चालू पर्याप्त" है तो ट्रिगर्स की ओर क्यों मुड़ें जो वास्तविक समय में हर एक डीएमएल ऑपरेशन को प्रभावित करेगा?
हारून बर्ट्रेंड

PS मुझे बहुत संदेह है कि उनकी नौकरी सृजन स्क्रिप्ट में 2008 R2 और 2012 के बीच कोई भी बदलाव होगा जब तक कि वे वास्तव में नौकरी की कार्यक्षमता को नहीं बदलते हैं (जब तक कि वे किसी नई सुविधा का लाभ नहीं उठाते हैं) एक संस्करण-विशिष्ट चीज नहीं होगी। नौकरी की स्क्रिप्ट को खुद नहीं बदलना चाहिए।
हारून बर्ट्रेंड

2
जरूरी नहीं कि आपको उन्हें sysadminएसक्यूएल एजेंट की नौकरियों को संशोधित करने के लिए देने की आवश्यकता नहीं है - msdn.microsoft.com/en-us/library/ms188283(v=sql.105).aspx
SQLFox

सभी की त्वरित प्रतिक्रिया के लिए धन्यवाद! मैं उनके दृष्टिकोण को गले लगाऊंगा और उन्हें सीसडमिन नहीं देने के साथ-साथ पर्स भी देखूंगा।
rzuech

जवाबों:


12

IMO आपका विक्रेता वास्तव में सही रास्ते पर है।

एक एप्लीकेशन लेयर जॉब के लिए उसे बहुत सारे आउट-ऑफ-द-बॉक्स SQL ​​एजेंट फीचर्स को फिर से करना होगा। त्रुटि रिपोर्टिंग और परिणाम SQL आदि में ट्रैकिंग आदि आदि)। और, सबसे महत्वपूर्ण बात, शेड्यूलिंग के लिए एक बैकअप / हा / डीसी समाधान प्रदान करें। आप नहीं चाहते कि आपकी आपदा पुनर्प्राप्ति कहानी 'हो और जब आप स्टैंडबाय सर्वर को पुनर्प्राप्त करने के बाद इन 50 NT अनुसूचक कार्यों का निर्माण करें'। इसलिए वह सिस्टम शेड्यूलर का उपयोग करने के खिलाफ वापस धकेलने में सही है, इसमें एजेंट के पास कुछ भी विशेषताएं और क्षमताएं नहीं हैं।

वह ट्रिगर के खिलाफ वापस धकेलने में और भी सही है। एक समकालिक ट्रिगर के साथ आवधिक नौकरी को बदलने से विलंबता बढ़ जाती है, सामंजस्य और युग्मन में वृद्धि होती है (स्कीमा में परिवर्तन होता है ...), सिंक मुद्दों (ट्रिगर त्रुटि-> नौकरी त्रुटि बनाम नौकरी त्रुटि-> फिक्स और बाद में पुनः प्रयास) के कारण डाउनटाइम जोखिम बढ़ जाता है , नाटकीय रूप से गतिरोध की समस्याओं को बढ़ाता है (ट्रैक / ट्रैकी के बीच क्रॉस अपडेट के कारण) और कई और अधिक समस्याएं हैं।

सबसे आसान समाधान वास्तव में एक एजेंट का काम है, और msdbडीबीए के लिए आरक्षित किसी भी तरह से नहीं है। एक अधिक फैंसी समाधान बातचीत टाइमर और आंतरिक सक्रियण का उपयोग करना होगा, जिसमें एजेंट नौकरियों पर कुछ फायदे होंगे, मुख्य रूप से रोकथाम के कारण (सब कुछ ऐप डीबी के अंदर है, फेलओवर परिदृश्यों पर विचार करें), लेकिन मैं पूरी तरह से समझ सकता हूं कि क्या आपका विक्रेता है किसी ऐसी चीज़ को आज़माने के लिए अनिच्छुक जिसे एक बहुत विशिष्ट जानकारी की आवश्यकता होती है। BTW मुझे आशा है कि आप हर 5 मिनट प्रति DB एक नौकरी का मतलब नहीं है ।

के रूप में sysadmin अनुमतियों के लिए: खेल का नाम कोड हस्ताक्षर है । आप अपने निजी प्रमाण पत्र के साथ उन्हें हस्ताक्षर करके, विशिष्ट प्रक्रियाओं की अनुमति दे सकते हैं, निरीक्षण और सत्यापन कर सकते हैं।


यहां स्टैक ओवरफ्लो पर आपके उत्तर का लिंक दिया गया है जो बातचीत टाइमर और आंतरिक सक्रियण का एक उदाहरण दिखाता है: stackoverflow.com/a/4079716
जॉन सिगेल

1
मैंने इसे स्वीकृत उत्तर के रूप में चिह्नित किया है जो सर्वसम्मति से प्रतीत होता है। सबसे बड़ी बात जो मैंने इस सब से छीन ली, वह है अनुप्रयोगों के लिए लगातार MSDB नौकरियों का उपयोग करना, और मुझे सुरक्षा के लिए उचित तरीके से करने के लिए यहां दिए गए लिंक का उपयोग करने की आवश्यकता होगी। बहुत ही सुखद हर कोई, और आपकी टिप्पणियों और समय के लिए धन्यवाद!
13 सितंबर

2

मेरी व्यक्तिगत प्राथमिकता तुल्यकालन के कम से कम कुछ हिस्से को संभालने के लिए ट्रिगर्स का उपयोग करना होगा। मैं विशेष रूप से अनुसूचित मतदान सिंक्रनाइज़ेशन की परवाह नहीं करता हूं, क्योंकि आपको संभावित संघर्षों, बासी डेटा, दोहराए जाने वाले काम के प्रदर्शन प्रभाव आदि से निपटना है, यदि वे इसे आक्रामक रूप से 1 से 5 मिनट के रूप में करना चाहते हैं, तो मैं अनुमान लगा रहा हूं। यह संघर्ष और गतिहीनता को कम करने के लिए है, और एक ट्रिगर की immediacy पता होगा।

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

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

वेल-बिहेव्ड ट्रिगर्स लिखना


हाँ 2 DB समान सर्वर उदाहरण पर हैं। व्यक्तिगत रूप से, मैंने ट्रिगर भी किया होगा और उनके अनुप्रयोग बहुत छोटे ड्यूटी डीबी के कुछ छोटे सापेक्ष हैं जो हमारे पास हैं। लेकिन, मुझे नहीं लगता कि मैं वास्तव में वेंडर को मना सकता हूं, क्योंकि मैं वास्तव में किसी भी "सर्वश्रेष्ठ अभ्यास" के बारे में बात नहीं कर सकता हूं क्योंकि एप्लिकेशन सिंकिंग के लिए एमएसडीबी नौकरियों का उपयोग न करने के बारे में। इसके अलावा मैं हारून की राय का बहुत सम्मान करता हूं इसलिए मैं उन्हें दबाने नहीं जा रहा हूं। db2 मैंने आपके लिंक को पढ़ा और इसे काफी जानकारीपूर्ण पाया, और सेवा ब्रोकर एक और अच्छा विकल्प है जिसे मैंने भी नहीं माना था। धन्यवाद!
rzuech

हाँ, यदि आप कभी भी ट्रिगर फेल होने (ऑफ़लाइन डेटाबेस, स्कीमा परिवर्तन आदि) के बारे में चिंतित हैं, तो सेवा ब्रोकर जाने के लिए रास्ता है, यह मानते हुए कि आप (निकट) तात्कालिक सिंक्रनाइज़ेशन चाहते हैं।
db2
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.