मेरे पास एक केंद्रीय डीबी है जिसे मैं अपने सभी सर्वर पर नौकरी के परिणाम लिखता हूं। मैं एक SQL नौकरी में शक्तियों के माध्यम से 3 मापदंडों को केंद्रीय सर्वर पर एक सपा में वापस भेज देता हूं जो यह पुष्टि करता है कि नौकरी उस समय चल रही होनी चाहिए, आदि जानकारी तब SSRS के माध्यम से सामने आती है ताकि हम एक नौकरी विफलताओं / लंबे समय तक चलने वाली नौकरी / देख सकें & नौकरियां जो नहीं चलती हैं, लेकिन होनी चाहिए (या अगर किसी ने शेड्यूल के साथ गड़बड़ की है)।
ऐसा करने के लिए, मेरे पास प्रत्येक सर्वर पर प्रत्येक जॉब में 2 जॉब स्टेप्स हैं और मैं प्रत्येक जॉब में जोड़े गए स्क्रिप्ट को केवल 1 स्टेप तक कम करना चाहूंगा..यहां तक कि इसे नेटवर्क शेयर से भी कॉल कर सकते हैं।
लेकिन मेरा मुद्दा उन 3 मापदंडों में से एक है जो मैं पास करता हूं। मुझे निष्पादन की नौकरी के भीतर से निष्पादित नौकरी या नौकरी का नाम प्राप्त करने की आवश्यकता है, इसलिए मुझे नाम पैरामीटर को हार्डकोड करने की आवश्यकता नहीं है। मेरे द्वारा पास किए गए 3 पैरामीटर जॉबिड, स्टेटस (सफलता / असफलता), इरोमार्ग हैं। मेरे द्वारा लिखी गई शक्तियाँ लिपि बहुत सीधी है।
Invoke-sqlcmd -ServerInstance "MYRemoteSYSTEM" -डैटेबस रिमोटडीबी-वाईवाई "अमल dbo.JOB_LOG 'जॉबनाम / आईडी', 'सक्सेस / फेल', 'बीएड मेसेज हियर'"
यह लिखता है कि मुझे मेज पर क्या चाहिए। मैंने msdb.dbo.sp_help_job / msdb.dbo.sp_get_composite_job_info / dbo.xp_sqlagent_enum_jobs / पर देखा है, लेकिन इनमें से कोई भी गारंटी नहीं देगा कि मुझे उस ईवेंट या सही ईवेंट का नाम मिल गया है जिसमें 1 से अधिक कार्य निष्पादित हो रहे हैं। उसी समय।
मैंने sys.sysprocesses पर भी देखने की कोशिश की है, लेकिन मुझे लगता है कि चूंकि एजेंट की नौकरी एक पॉवरशेल स्क्रिप्ट है, इसलिए यह ".net SqlClient डेटा प्रदाता" के रूप में दिखाता है, इसलिए मैं बाइनरी जॉब को "SQLAgent" के रूप में दिखाने वाली नौकरियों से ट्रिम नहीं कर सकता हूं - TSQL जॉबस्टेप (नौकरी 0xF1800243164745429C30474FFD5C990C: चरण 1) "--- यह मैंने डेनी चेरी के पोस्ट से सीखा - धन्यवाद डेनी-
निष्पादित जॉब को कैसे हथियाना है, इस पर किसी भी विचार की बहुत सराहना की जाएगी।
धन्यवाद,
क्रिस