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

19/12/2011

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

שייך לקטגוריה: 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 של התגובות לרשומה הזאת טרקבאק קישור

להגיב

Fill in your details below or click an icon to log in:

WordPress.com Logo

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

Twitter picture

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

Facebook photo

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

Connecting to %s

ערכת עיצוב: Shocking Blue Green. בלוג בוורדפרס.קום.

Follow

Get every new post delivered to your Inbox.