क्या sposad_jobstep में @os_run_priority वास्तव में SQL Server 2008 R2 में काम करती है?


13

SQL Server 2008 R2 @os_run_priorityमें sp_add_jobstepवास्तव में काम करता है ?

इसे "आरक्षित" या "अनिर्दिष्ट" के रूप में वर्णित किया गया है। हालाँकि, मैं इसे sp_add_jobstepपरिभाषा में देखता हूँ :

@os_run_priority INT = 0, -- -15 = Idle, -1 = Below Normal, 0 = Normal, 1 = Above Normal, 15 = Time Critical)

मुझे संदेह होगा कि यह सिर्फ उस @os_run_priority की रिपोर्टिंग कर रहा है, जिसका उपयोग आपको प्राथमिकता को प्रभावित करने का मौका देने के बजाय किया गया था। यदि हां, तो पाठ आपको यह पता लगाने में मदद कर रहा है कि प्राथमिकता क्या थी।
RLF

जवाबों:


11

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

स्रोत कोड में एक नज़र लेने के बाद (मैं माइक्रोसॉफ्ट पर काम करता हूं और एक्सेस करता हूं), जबकि मूल्य वास्तव में प्रत्येक सबसिस्टम को भेजी गई नौकरी की चरण जानकारी के हिस्से के रूप में पारित किया गया है, मुझे ऐसी जगह नहीं मिली जो वास्तव में मूल्य को भाग के रूप में सेट करें नौकरी के निष्पादन के चरण। हालाँकि, थ्रेड्स जो SQL सर्वर एजेंट के हिस्से के रूप में विभिन्न प्राथमिकता स्तरों में चलते हैं और वे थ्रेड जॉब स्टेप फंक्शनलिटी या सबसिस्टम के साथ मदद कर सकते हैं जो किसी विशिष्ट भूमिका को भरते हैं या नहीं।

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


4

हालांकि यह मान नौकरी चरण के हिस्से के रूप में सहेजा गया है, मुझे कोई सबूत नहीं मिल सकता है कि मूल्य का उपयोग किया जाता है।

यदि मैं पैरामीटर , @os_run_priority = Xको जोड़कर मान सेट करता हूं EXEC msdb.dbo.sp_update_jobstep, तो यह os_run_priorityकॉलम के कॉलम में सही तरीके से दिखाई देता है msdb.dbo.sysjobsteps

मैंने 2 चरणों के साथ एक नौकरी बनाई: एक टी-एसक्यूएल स्टेप और एक ऑपरेटिंग सिस्टम (CmdExec) स्टेप। मुझे लगता है कि यह अधिक संभावना है कि "ओएस रन प्राथमिकता" जैसे विकल्प CmdExec कदम को प्रभावित करेगा, लेकिन दोनों का परीक्षण करना अच्छा है।

प्रत्येक चरण ने WAITFOR DELAY '00:00:30.000'ऐसा किया कि जब मैं प्राथमिकता बदल गया था, तो यह देखने के लिए कि मैं चल रही प्रक्रियाओं को देख रहा हूं, यह घूम जाएगा।

मैंने प्रोसेस एक्सप्लोरर का उपयोग करके प्रक्रियाओं की जांच की । जहाँ तक मेरा बता सकते हैं, मानों (और मैंने कोशिश की 1, 15और -1) कोई असर नहीं। मैंने विंडोज 10 पर SQL Server 2012 और 2016 दोनों का उपयोग करने की कोशिश की।

मैंने Windows XP पर चलने वाले SQL Server 2008 R2 पर भी प्रयास किया। मैंने फिर से इस संपत्ति का कोई संकेत नहीं देखा कि SQLAGENT प्रक्रिया या SQLCMD प्रक्रिया (जो मैं CmdExec चरण में उपयोग कर रहा था, वापस करने के लिए SQL सर्वर में कॉल करने के लिए WAITFOR DELAY) का कोई प्रभाव नहीं है।

बेशक, यह ध्यान दिया जाना चाहिए कि थ्रेड के प्राथमिकता स्तर को बदलने के लिए प्रक्रिया को स्वयं कुछ अनुमतियों की आवश्यकता होती है। जब SQL सर्वर एजेंट स्थानीय सिस्टम खाते के रूप में चल रहा है, तो उसके पास ऐसे अधिकार नहीं हो सकते हैं। हालाँकि, मैंने SQL सर्वर एजेंट के लिए सेवा खाते के रूप में अपने स्वयं के विंडोज लॉगिन का उपयोग करके परीक्षण (SQL सर्वर 2016 केवल) किया, और इस संपत्ति का कोई संकेत नहीं देखा।


1
यह प्रत्येक सबसिस्टम को नौकरी के ढांचे में पारित किया गया है और प्रत्येक सबसिस्टम यह चुनने के लिए जिम्मेदार है कि वह इसके साथ क्या करता है। मुझे ऐसा सबसिस्टम नहीं मिला, जिसने 2008R2 w / टर्मिनल पैच पर ऐसा कोड लागू किया हो।
सीन गैलार्डी

@SeanGallardy टॉम ने किसी भी चिंताओं को दूर करने वाले लापता टुकड़े के साथ आपके उत्तर को अपडेट किया :-)। मुझे नहीं पता था कि आपके पास स्रोत तक पहुंच है, और अक्सर पर्याप्त लोग बहुत आत्मविश्वास से / सशक्त रूप से चीजों को राज्य करते हैं, जैसे कि प्रत्यक्ष, मनाया गया ज्ञान है और फिर भी यह सिर्फ एक सबसे अच्छा अनुमान है। मैंने आपके उत्तर को बदल दिया है, लेकिन अपने उत्तर को चारों ओर रखूंगा क्योंकि यह प्राथमिकताओं के बारे में कुछ अतिरिक्त जानकारी प्रदान करता है और साथ ही समान मुद्दों की जांच कैसे करता है।
सोलोमन रटज़स्की
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.