Skip to content

mlorvand/Job_Duration_Analyzer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

⏱️ SQL Server Agent Job Duration Analyzer (Min / Max / Avg)

SQL Server Category Language Purpose Author

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.


🌐 Languages


🇮🇷 نسخه فارسی

🧠 معرفی

این اسکریپت برای بررسی مدت زمان اجرای 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

About

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`.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors