2009-04-03 17 views
5

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

[संपादित करें] मैं कोड है कि मेरे लिए काम करता माध्यम से कर सकते हैं। मुझे सिर्फ यह जानने की जरूरत है कि यदि कोई अस्तित्व में है तो एपीआई क्या करना है।

उत्तर

7

अगर मैं स्पष्ट के लिए दबाव डाल रहा हूं तो मैं क्षमा चाहता हूं; मैंने अभी तक किसी को भी ड्रिल नहीं देखा है।

एक कस्टम टाइमर काम (यानी, अपने खुद के टाइमर काम वर्ग कि SPJobDefinition से निकला है) बाधा निर्माता मानकों को नियंत्रित किया जाता है।

टाइमर नौकरियों आम तौर पर सर्वर जहां उनके द्वारा जमा किये (के रूप में विन्नी द्वारा इंगित) कोई लक्ष्य सर्वर टाइमर काम के निर्माण के दौरान निर्दिष्ट किया जाता है यह सोचते हैं पर चलते हैं। SPJobDefinition प्रकार के लिए दो अतिभारित कंस्ट्रक्टर्स, हालांकि, एक SPServer और तीसरे और चौथे पैरामीटर के रूप में एक SPJobLockType क्रमश: स्वीकार करते हैं। इन दो पैरामीटर का सही ढंग से उपयोग करने से आप यह निर्देश दे सकते हैं कि आपका काम कहां चलता है।

अपने लक्ष्य सर्वर को SPServer और "जॉब" के एक SPJobLockType के रूप में निर्दिष्ट करके, आप अपनी पसंद के सर्वर पर चलाने के लिए बनाए गए टाइमर जॉब इंस्टेंस को बाधित कर सकते हैं।

मैंने जो वर्णन किया है उस पर दस्तावेज़ीकरण के लिए, एमएसडीएन: http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spjobdefinition.spjobdefinition.aspx देखें।

मैं कोड आप चला रहे हैं बारे में कुछ पता नहीं है, लेकिन कस्टम टाइमर नौकरियों आमतौर पर फ़ीचर सक्रियण के दौरान सेटअप कर रहे हैं। मुझे समझ में आया कि आपका कोडबेस आपका स्वयं का नहीं हो सकता है (?); यदि ऐसा है, तो आप SPFeatureReceiver से प्राप्त होने वाले एक या अधिक प्रकार/कक्षाओं को देखना चाहेंगे। फ़ीचर में ऐसी कक्षाओं की सक्रिय विधि है जहां आपको वह कोड मिल सकता है जो वास्तव में टाइमर जॉब इंस्टेंटेशन करता है।

बेशक

, आप भी कस्टम टाइमर काम वर्ग (या वर्ग) को देखने के लिए खुद को देखने के लिए कि वे कैसे instantiated किया जा रहा हो चाहता हूँ। कभी-कभी डेवलपर्स कक्षा में खुद को कक्षा में तत्काल बनाते हैं (उदाहरण के लिए फैक्टरी विधि पैटर्न के माध्यम से)।टाइमर जॉब क्लास और एसपीएफ़ेचर रिसीवर कार्यान्वयन के बीच, हालांकि, आपको यह बदलने की दिशा में होना चाहिए कि क्या बदलने की जरूरत है।

मुझे उम्मीद है कि इससे मदद मिलती है!

+0

धन्यवाद, यह वही है जो मैं ढूंढ रहा था। – James

+0

+1 अच्छी जानकारी, मुझे नहीं पता था कि यह संभव था। –

2

एक खेत में सर्वर समान होने की आवश्यकता है। यदि आप अपने वेब फ्रंट सिरों के लिए वीएम का उपयोग करते हैं, तो आप एक सर्वर स्नैप कर सकते हैं और प्रतियां प्रावधान कर सकते हैं ताकि आप जान सकें कि वे सभी समान हैं।

+0

+1 मैं इसके साथ सहमत हूं, लेकिन ग्राहक के नेटवर्क व्यवस्थापक इसे इस तरह से नहीं देखते हैं। मैं बस यहां एक कम टकराव विकल्प की तलाश में हूं। – James

+0

यहां रेथियॉन में, माइक्रोसॉफ्ट ने हमें हमारे सर्वर डुप्लीकेट बनाने के लिए कहा है क्योंकि विंडोज वर्कफ़्लो बस काम नहीं करेगा, और हमारे पास कई अन्य अप्रत्याशित flakiness हैं। मैंने डेव के जवाब को उखाड़ फेंक दिया। – shapr

1

सभी वेब फ्रंट सिरों पर प्रति परिभाषा टाइमर नौकरियां चलती हैं।

यदि आपको किसी विशिष्ट सर्वर पर चलाने के लिए निर्धारित तर्क की आवश्यकता है, तो आपको या तो टाइमर नौकरी में इसे विशेष रूप से कोड करने या "मानक" एनटी सेवा का उपयोग करने की आवश्यकता है।

+0

इसे कोडिंग, एक विकल्प है। क्या कोई एपीआई है जहां मैं SharePoint को निर्देश दे सकता हूं कि मैं इसे किसी विशिष्ट सर्वर पर चलाऊं? – James

0

आप व्यवसाय सेवा के साथ एक वेब सेवा लागू कर सकते हैं और उस वेब सेवा को एक मशीन पर तैनात कर सकते हैं। फिर आपका टाइमर जॉब समय-समय पर आपकी वेब सेवा को ट्रिगर कर सकता है।

यह आपके टाइमर नौकरी के चलते महत्वपूर्ण नहीं होगा। शेयरपॉइंट खुद को तय करता है कि टाइमर नौकरी कहां चलाएं।

1

मुझे लगता है कि SPJobLockType को 'जॉब' में सेट करने का दुष्प्रभाव यह है कि यह उस सर्वर पर निष्पादित होगा जहां नौकरी सबमिट की गई है।