A practical T-SQL script to analyze how long SQL Server Agent Jobs take to run, showing Minimum, Maximum, and Average execution times per job step — formatted in HH:MM:SS.
این اسکریپت برای بررسی مدت زمان اجرای Jobهای SQL Server Agent طراحی شده است.
با استفاده از تاریخچه Jobها در دیتابیس msdb، حداقل، حداکثر و میانگین زمان اجرای هر Step از هر Job را محاسبه و بهصورت HH:MM:SS نمایش میدهد.
کاربردهای اصلی:
- شناسایی Jobهای کند
- مقایسه عملکرد Job در طول زمان
- عیبیابی Jobهایی که ناگهان طولانیتر اجرا میشوند
- Capacity Planning و Performance Monitoring
✅ تحلیل Jobها بر اساس Step
✅ محاسبه Min / Max / Avg Duration
✅ فرمت خروجی خوانا به صورت HH:MM:SS
✅ فقط Jobهای موفق (run_status = 1)
✅ مناسب برای DBAها و تیمهای Operation
WITH cte AS
(
SELECT
j.name AS JobName,
h.step_name AS StepName,
MIN(h.run_duration) AS MinTime,
MAX(h.run_duration) AS MaxTime,
AVG(h.run_duration) AS AvgTime
FROM msdb.dbo.sysjobhistory h
JOIN msdb.dbo.sysjobs j
ON h.job_id = j.job_id
WHERE h.step_id > 0
AND h.run_status = 1
GROUP BY j.name, h.step_name
)
SELECT
cte.JobName,
cte.StepName,
STUFF(STUFF(REPLACE(STR(cte.MinTime,6,0),' ','0'),3,0,':'),6,0,':') AS MinDuration,
STUFF(STUFF(REPLACE(STR(cte.MaxTime,6,0),' ','0'),3,0,':'),6,0,':') AS MaxDuration,
STUFF(STUFF(REPLACE(STR(cte.AvgTime,6,0),' ','0'),3,0,':'),6,0,':') AS AvgDuration
FROM cte;
⚙️ نکات فنی
ستون run_duration بهصورت HHMMSS ذخیره شده و با STUFF فرمت شده است.
فقط Stepهای واقعی Job (step_id > 0) بررسی میشوند.
Jobهای ناموفق برای دقت بیشتر حذف شدهاند.
🧑💻 نویسنده
مهدی لوروند (Mahdi Lorvand)
💼 Helpdesk & VoIP Expert | SQL Learner | IT Enthusiast
📧 mehdilorvand92@gmail.com
🔗 LinkedIn
🇬🇧 English Version
🧠 Overview
This script analyzes SQL Server Agent Job execution times using msdb job history.
It calculates minimum, maximum, and average runtime for each job step and formats the results as HH:MM:SS.
Ideal for:
Detecting slow or unstable jobs
Performance trend analysis
Job optimization & troubleshooting
Operational monitoring
🚀 Features
✅ Step-level job analysis
✅ Min / Max / Avg duration calculation
✅ Human-readable HH:MM:SS output
✅ Filters only successful job runs
✅ Lightweight and production-safe
🧾 Script
(See above — identical)
🧑💻 Author
Mahdi Lorvand
📧 mehdilorvand92@gmail.com
🔗 LinkedIn: https://www.linkedin.com/in/mehdi-lorvand-08aa151a4/
🇸🇦 الإصدار العربي
🧠 المقدّمة
هذا السكربت يحلل مدة تنفيذ وظائف SQL Server Agent ويعرض أقل وأعلى ومتوسط زمن التنفيذ لكل خطوة من خطوات الوظيفة بصيغة HH:MM:SS.
مفيد لـ:
اكتشاف الوظائف البطيئة
مراقبة الأداء مع مرور الوقت
تحسين وتشخيص مشاكل الوظائف
إدارة السعة التشغيلية
🚀 المميزات
✅ تحليل الوظائف حسب الخطوات
✅ حساب أقل / أعلى / متوسط مدة التنفيذ
✅ عرض النتائج بصيغة زمنية واضحة
✅ يعتمد فقط على الوظائف الناجحة
✅ مناسب لمديري قواعد البيانات
🧾 السكربت
(See above)
🧑💻 المؤلف
مهدي لورفند (Mahdi Lorvand)
📧 mehdilorvand92@gmail.com
🔗 LinkedIn: https://www.linkedin.com/in/mehdi-lorvand-08aa151a4/
🪪 License
MIT License — Free to use, modify, and share with attribution.
⭐️ Support
If this script helped you, please give it a ⭐️ on GitHub or share it with your DBA teammates!
yaml
Copy code