SQL एजेंट नौकरियों की कल्पना के लिए एक अच्छा उपकरण क्या है? [बन्द है]


14

मैं एजेंट नौकरियों के प्रबंधन के लिए बिल्ट-इन MS SQL स्टूडियो टूल्स को थोड़ा सा निराशाजनक मानता हूं। वहाँ क्या उपकरण आप उपयोगी पाया है?

ऑफहैंड, ऐसे तीन उपकरण हैं जिन्हें मैं इस तरह के टूल में देखना चाहता हूं:

  • कब, कितनी देर तक, और क्या वे सफल हुए, किन नौकरियों का एक ग्राफिकल सारांश।
  • नौकरी गतिविधि मॉनिटर की तरह एक वर्तमान स्थिति दृश्य, लेकिन निकट-वास्तविक समय में ताज़ा।
  • नौकरियों की नकल या संशोधन के लिए एक अधिक सुविधाजनक इंटरफ़ेस (उदाहरण के लिए, मोडल संवादों द्वारा अवरुद्ध किए बिना दो नौकरी चरणों की तुलना करें)।

इसे संभालने के लिए शायद थोड़ा सा ऐप लिखना सरल होगा, लेकिन किसी ने निश्चित रूप से पहले से ही ऐसा किया है, और इसे बेहतर किया है।

यह स्पष्ट रूप से एक व्यक्तिपरक सवाल है, इसलिए यदि किसी प्रकार का एक रास्ता भटकता है, तो इसे सीडब्ल्यू बनाने के लिए स्वतंत्र महसूस करें।

जवाबों:


13

क्या आसपास कुछ गुगली कर रहे थे और यहाँ कुछ सॉफ़्टवेयर हैं जो आपको रुचि दे सकते हैं:

  1. SQL नौकरी प्रबंधक https://www.idera.com/productssolutions/freetools/sqljobmanager

  2. वर्तमान में चल रहे SQL सर्वर एजेंट नौकरियां http://sqlconcept.com/2011/06/25/how-to-query-currently-running-sql-server-agent-jobs/

यदि किसी के पास जोड़ने के लिए अधिक लिंक हैं, तो आगे बढ़ें!


बिंदु 3 के लिए, लिंक क्वेरी और नोट्स यहाँ हैं -

आज मैं एक खोज पर चला गया, जो कि वर्तमान में चल रहे सभी SQL सर्वर एजेंट नौकरियों को सूचीबद्ध करने का एक तरीका है। हर दूसरे खोज के रूप में, यह भी Google- आईएनजी के साथ शुरू हुआ। :)

2 मिनट के भीतर मैंने SQLServerPedia पर ब्रेंट ओज़र द्वारा इस महान पोस्ट को पाया। यह पद इतना महान क्यों है? यह बहुत अच्छा है क्योंकि ब्रेंट को लगा कि यदि आप केवल sysjobs और sysjobhistory टेबल को क्वेरी करते हैं तो आपको सटीक वर्तमान नौकरी की स्थिति नहीं मिलेगी। यानी sysjobhistory तालिका में आपके पास एक स्तंभ run_status है, हालांकि (भले ही इस स्तंभ के लिए संभावित मानों के अनुसार "नौकरी निष्पादन की स्थिति: 0 = विफल, 1 = सफल, 2 = पुन: प्रयास, 3 = रद्द, 4 वास्तविकता में = प्रगति में), मूल्य कभी 4 नहीं होगा (प्रगति में)। दरअसल, sysjobhistory तालिका में निष्पादित प्रत्येक कार्य चरण का ऐतिहासिक डेटा रखा जाता है, जिसका अर्थ है कि चरण की स्थिति अगले चरण के निष्पादित होने के बाद ही अपडेट की जाती है। दूसरे शब्दों में, तालिका वास्तविक समय में अपडेट नहीं की जाती है, न ही हर दूसरे सेकंड में।

तो, ब्रेंट को पता चला कि एक अनिर्धारित संग्रहीत प्रक्रिया है sys.xp_sqlagent_enum_jobs, जो sp_help_job का हिस्सा है, जो एजेंट नौकरी की वर्तमान निष्पादन स्थिति दे सकता है।

भले ही मुझे वर्तमान में चल रही नौकरियों को पाने का एक रास्ता मिल गया है, मैं इस स्क्रिप्ट से खुश नहीं था क्योंकि यह केवल SQL 2005/2008 पर चलता है।

यदि मेरे पास SQL ​​2000 आवृत्ति है और वर्तमान में चल रही नौकरियों के बारे में बहुत उत्सुक हूं तो मुझे क्या करना चाहिए?

टिम चैपमैन की थोड़ी सी मदद (www.SQLServerNation.com के मास्टर) के साथ मुझे लगा कि यह कैसे करना है। धन्यवाद, टिम!

यहां अंतिम स्क्रिप्ट है, जो SQL 2000, 2005 और 2008 पर चलेगी, और जो आपको वर्तमान में चल रहे SQL सर्वर एजेंट की नौकरी देगी। (जैसा कि आप देख सकते हैं, ब्रेंट की स्क्रिप्ट के साथ अंतर बहुत कम है: "sys.xp_sqlagent_enum_jobs" के बजाय मैं "master.dbo.xp_sqlagent_enum.jobs" का उपयोग कर रहा हूं और मैं केवल "" x का उपयोग करके वर्तमान में चल रहे कार्य प्राप्त करने के लिए परिणाम को सीमित कर रहा हूं। .running = 1 ″)।

जैसा है सरल है। का आनंद लें।

IF EXISTS (SELECT *
FROM    tempdb.dbo.sysobjects
WHERE   id = OBJECT_ID(N'[tempdb].[dbo].[Temp1]')
)
DROP TABLE [tempdb].[dbo].[Temp1]
GO
CREATE TABLE [tempdb].[dbo].[Temp1]
(
job_id uniqueidentifier NOT NULL,
last_run_date nvarchar (20) NOT NULL,
last_run_time nvarchar (20) NOT NULL,
next_run_date nvarchar (20) NOT NULL,
next_run_time nvarchar (20) NOT NULL,
next_run_schedule_id INT NOT NULL,
requested_to_run INT NOT NULL,
request_source INT NOT NULL,
request_source_id sysname
COLLATE database_default NULL,
running INT NOT NULL,
current_step INT NOT NULL,
current_retry_attempt INT NOT NULL,
job_state INT NOT NULL)
DECLARE @job_owner   sysname
DECLARE @is_sysadmin   INT
SET @is_sysadmin   = isnull (is_srvrolemember ('sysadmin'), 0)
SET @job_owner   = suser_sname ()
INSERT INTO [tempdb].[dbo].[Temp1]

--EXECUTE sys.xp_sqlagent_enum_jobs @is_sysadmin, @job_owner
EXECUTE master.dbo.xp_sqlagent_enum_jobs @is_sysadmin, @job_owner
UPDATE [tempdb].[dbo].[Temp1]
SET last_run_time    = right ('000000' + last_run_time, 6),
next_run_time    = right ('000000' + next_run_time, 6);
-----
SELECT j.name AS JobName,
j.enabled AS Enabled,
CASE x.running
WHEN 1
THEN
'Running'
ELSE
CASE h.run_status
WHEN 2 THEN 'Inactive'
WHEN 4 THEN 'Inactive'
ELSE 'Completed'
END
END
AS CurrentStatus,
coalesce (x.current_step, 0) AS CurrentStepNbr,
CASE
WHEN x.last_run_date > 0
THEN
convert (datetime,
substring (x.last_run_date, 1, 4)
+ '-'
+ substring (x.last_run_date, 5, 2)
+ '-'
+ substring (x.last_run_date, 7, 2)
+ ' '
+ substring (x.last_run_time, 1, 2)
+ ':'
+ substring (x.last_run_time, 3, 2)
+ ':'
+ substring (x.last_run_time, 5, 2)
+ '.000',
121
)
ELSE
NULL
END
AS LastRunTime,
CASE h.run_status
WHEN 0 THEN 'Fail'
WHEN 1 THEN 'Success'
WHEN 2 THEN 'Retry'
WHEN 3 THEN 'Cancel'
WHEN 4 THEN 'In progress'
END
AS LastRunOutcome,
CASE
WHEN h.run_duration > 0
THEN
(h.run_duration / 1000000) * (3600 * 24)
+ (h.run_duration / 10000 % 100) * 3600
+ (h.run_duration / 100 % 100) * 60
+ (h.run_duration % 100)
ELSE
NULL
END
AS LastRunDuration
FROM          [tempdb].[dbo].[Temp1] x
LEFT JOIN
msdb.dbo.sysjobs j
ON x.job_id = j.job_id
LEFT OUTER JOIN
msdb.dbo.syscategories c
ON j.category_id = c.category_id
LEFT OUTER JOIN
msdb.dbo.sysjobhistory h
ON     x.job_id = h.job_id
AND x.last_run_date = h.run_date
AND x.last_run_time = h.run_time
AND h.step_id = 0
where x.running = 1

मैंने SQLjobvis को एक कोशिश दी; यह मुझे कुछ हद तक कार्यक्रम की कल्पना करने देता है, लेकिन यह वास्तव में किसी भी बेहतर नहीं है जो मैं एक घंटे में खुद के लिए कर सकता हूं। मैंने समय अक्ष को लंबवत रखा होगा, ताकि उपयोगकर्ता आसानी से दिनों के माध्यम से स्क्रॉल कर सकें।
जॉन ऑफ ऑल ट्रेड्स

3

मुझे पता है कि यह एक पुरानी पोस्ट है, और मुझे व्यक्तिगत रूप से भी यही समस्या थी। कई उदाहरणों में कई SQL एजेंट नौकरियों का प्रबंधन करना, इसलिए मैंने SQL एजेंट इनसाइट बनाने का फैसला किया , यहाँ पाया> http://brentec.ca । यह एक उभरता हुआ उत्पाद है और निकट भविष्य में बीटा से बाहर निकल जाएगा और यह लगातार अपडेट हो रहा है और सुझावों का स्वागत है। यह एक ऐसी परियोजना है जिसे मैं अपने खाली समय के दौरान काम करता हूं क्योंकि मैं परामर्श करता हूं और एक पूर्णकालिक टमटम भी है, लेकिन यदि सुझाव लायक हैं, तो वे भविष्य के लिए हॉपर में डालते हैं।

वर्तमान में यह एसक्यूएल एजेंट के लिए एक निगरानी उपकरण है, कुछ स्क्रिप्टिंग क्षमता के साथ। वर्तमान में प्रति वर्ष 2-3 अपडेट के साथ संस्करण 0.11 पर बैठता है और कुछ सहायता के लिए संपर्क जानकारी है। हां, अभी, कोई ऑनलाइन मदद नहीं है, लेकिन चूंकि यह बहुत अधिक पढ़ा जाने वाला उत्पाद है, इसलिए SQL की निगरानी की गई आवृत्ति से कोई नुकसान नहीं हो सकता है।


2

क्या आपने रिपोर्ट की कोशिश की?

SQL एजेंट => रिपोर्ट => मानक रिपोर्ट पर राइट क्लिक करें


मैं नहीं था, लेकिन वे बहुत मददगार नहीं हैं। दो हैं, और वे केवल निष्पादन की संख्या और औसत रन समय दिखाते हैं।
जॉन ऑफ ऑल ट्रेड्स

स्पष्ट होने के लिए, मैं SQL स्टूडियो रिपोर्ट्स को खारिज नहीं कर रहा हूं, अगर किसी के पास उपयोगी रिपोर्ट है तो वे साझा करना चाहेंगे।
जॉन ऑफ ऑल ट्रेड्स

2

मुझे यकीन नहीं है कि यह आपके सभी मानदंडों को पूरा करता है, लेकिन आप इसे देख सकते हैं:

http://www.sqlsoft.co.uk/sqljobvis.php


वेब साइट मुझे उनके .exe चलाने के लिए थोड़ा सा लेरी बनाता है। कुछ संपर्क जानकारी एक शुरुआत होगी।
जॉन ऑफ ऑल ट्रेड्स

2

सूची में जोड़ने के लिए एक और:

मुझे इस बारे में एक बात पसंद है कि यह अन्य घटकों जैसे विंडोज शेड्यूलर और ओरेकल कार्यों के साथ एकीकृत है।

जब मैंने हीप पर पूछा तो इसे लाने के लिए मार्क का धन्यवाद ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.