הבלוג של גרי רשף

19/12/2011

אילו ג'ובים רצים כרגע / רצו קודם (2)?

Filed under: Uncategorized — גרי רשף @ 20:46

לפני כחודש וחצי פרסמתי פוסט בו הצעתי דרך מעט מסורבלת להציג מידע על ג'ובים שרצים כרגע.
השליפה התבססה על הפלטים של פרוצדורות המערכת SP_Help_Job ו-SP_Help_JobActivity מכיוון שלא מצאתי את המידע המבוקש בטבלאות המערכת.
בזמן שעבר מאז הצלחתי להגיע למידע החסר, ולהרחיב את הסקריפט הקודם כך שיציג מידע לגבי הג'ובים שרצים כרגע ושרצו קדם, כולל הצעדים השונים שלהם.
השליפה מעט כבדה, מצריכה הרשאות קריאה מ-msdb, והנה היא לפניכם:

Select  SJ.name,
        SJ.description,
        IsNull(JA.last_executed_step_id,0)+1 [Step],
        SJS.step_name,
        'In progress' Job_Run_Ststus,
        'In progress' Step_Run_Ststus,
        SJS.database_name,
        SJS.command [SQL],
        JA.start_execution_date [Job_Begin],
        Null Job_End,
        SP.login_time [Step_Begin],
        Null [Step_End],
        SJS.output_file_name
From    master.dbo.sysprocesses SP
Inner Join msdb.dbo.sysjobs SJ
        On SubString(program_name,48,16)=Replace(Right(job_id,18),'-','')
Inner Join msdb.dbo.sysjobsteps SJS
        On SJ.job_id=SJS.job_id
Inner Join msdb.dbo.sysjobactivity JA
        On SJ.job_id=JA.job_id
        And JA.start_execution_date Is Not Null
        And JA.job_history_id Is Null
        And IsNull(JA.last_executed_step_id,0)+1=SJS.step_id
Union All
Select  SJ.name,
        SJ.Description,
        JH.step_id Step,
        JH.step_name,
        Case IsNull(JHs.run_status,4) When 0 Then 'Failed'
                                      When 1 Then 'Succeeded'
                                      When 2 Then 'Retry'
                                      When 3 Then 'Canceled'
                                      When 4 Then 'In progress'
                                      End Job_Run_Ststus,
        Case JH.run_status When 0 Then 'Failed'
                                      When 1 Then 'Succeeded'
                                      When 2 Then 'Retry'
                                      When 3 Then 'Canceled'
                                      When 4 Then 'In progress'
                                      End Step_Run_Ststus,
        SJS.database_name,
        SJS.command SQL,
        IsNull(JHs.Job_Begin,(Select Max(start_execution_date) From msdb..sysjobactivity Where job_id=SJ.job_id)) Job_Begin,
        JHs.Job_End,
        JH.[Step_Begin],
        JH.[Step_End],
        SJS.output_file_name
From    (Select *,
                msdb.dbo.agent_datetime(run_date,run_time) [Step_Begin],
                msdb.dbo.agent_datetime(run_date,run_time)+msdb.dbo.agent_datetime(19000101,run_duration) [Step_End]
        From    msdb..sysjobhistory
        Where   step_id<>0) JH
Left Join (Select *,
                msdb.dbo.agent_datetime(run_date,run_time) [Job_Begin],
                msdb.dbo.agent_datetime(run_date,run_time)+msdb.dbo.agent_datetime(19000101,run_duration) [Job_End]
        From    msdb..sysjobhistory
        Where   step_id=0) JHs
        On JH.[Step_Begin]>=JHs.[Job_Begin]
        And JH.[Step_End]<=JHs.[Job_End]
Inner Join msdb.dbo.sysjobs SJ
        On JH.job_id=SJ.job_id
Inner Join msdb.dbo.sysjobsteps SJS
        On SJ.job_id=SJS.job_id
        And JH.step_id=SJS.step_id
Order By name,
        Job_Begin,
        Step;

clip_image002

בשליפה שני חלקים המחוברים על ידי Union,

כאשר הראשון מתייחס ל-Steps שרצים כרגע,

והשני ל-Steps שהסתיימו בג'ובים שעדיין רצים, ולג'ובים (כולל ה-Steps) שכבר הסתיימו.

בצילום המסך ניתן לראות מספר ריצות שהסתיימו (יש ערך בעמודה Job_End),

מספר Steps שהסתיימו בריצה שעדיין פעילה (יש ערך בעמודת Step_End אך לא ב-Job_End),

ו-Step שעדיין רץ (אין ערך בעמודה Step_End).

מודעות פרסומת

להגיב »

עדיין אין תגובות.

RSS feed for comments on this post. TrackBack URI

כתיבת תגובה

הזינו את פרטיכם בטופס, או לחצו על אחד מהאייקונים כדי להשתמש בחשבון קיים:

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s

יצירה של אתר חינמי או בלוג ב־WordPress.com.

%d בלוגרים אהבו את זה: