2010-10-19 10 views
9

मेरे पास मेरी एसक्यूएल एजेंट में कुछ निर्धारित कार्यों:कैसे Sql सर्वर नौकरियां को रोकने के लिए चलाने के लिए एक साथ

  • Job1, हर 2 मिनट क्रियान्वित
  • Job2, क्रियान्वित हर 10 मिनट
  • Job3, क्रियान्वित हर 15 मिनट

जैसा कि आप देख सकते हैं, कई नौकरियां एक साथ चल सकती हैं। जब ये नौकरियां एक साथ चलती हैं, तो यह CPU उपयोग को 100% तक पहुंचने का कारण बनती है।

क्या कोई समाधान है? क्या समवर्ती रूप से चल रही नौकरियों की संख्या को नियंत्रित करने का कोई तरीका है? नोट: मुझे अपनी उचित अवधि में लगभग चलाने के लिए इन नौकरियों की आवश्यकता है।

+0

आप एक समय में एक से अधिक नौकरी चलाने के लिए म्यूटेक्स का उपयोग कर सकते हैं - एसबीएल क्वेरी को डीबी में भेजने के लिए आप किस भाषा का उपयोग कर रहे हैं? – SlappyTheFish

+0

ये एसक्यूएल सर्वर एजेंट में नौकरियां हैं। – ehsan

उत्तर

12

के माध्यम से sp_getapplock

आप उपयोगकर्ता नियंत्रित संगामिति के लिए पूछ रहे हैं एक सत्र ताला का प्रयोग करें और यह आमतौर पर सबसे अच्छा तरीका है।

यह लॉक पहले से ही किसी अन्य नौकरी द्वारा आयोजित होने पर प्रतीक्षा या निरस्त करने की अनुमति देता है। ओवरलैपिंग चलाने के लिए एक ही कार्य को मजबूर करने वाले एकाधिक उपयोगकर्ताओं को रोकने के लिए हम इसे एक या 2 स्थानों में उपयोग करते हैं। यह अच्छा काम करता है।

+3

+1: बांध मैं चाहता हूं कि मैं इस साल पहले जानता था। पहले, मैं किसी दिए गए प्रक्रिया की वर्तमान स्थिति की निगरानी करने के लिए स्थिति तालिका का उपयोग कर समस्या के इस स्वाद के लिए अपना स्वयं का समाधान चला रहा था। –

+0

@ जॉन संसॉम: सेवा होने की खुशी है ... यदि आप लेनदेन ताले का उपयोग कर सकते हैं तो यह भी स्वयं रिलीज़ हो रहा है। – gbn

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