terça-feira, 17 de setembro de 2019

Identificar Jobs em Execução.

Identificar Jobs em Execução.
Database_name : Database que está configurado o Job
JOB_NAME : Nome do job em execução
SESSION_ID : Id da sessão de processamento, util quando utilizado a SP_WHOISACTIVE, que retorna no Program_name somente o id do job exemplo (SQLAgent - TSQL JobStep (Job 0x026126442B14604095F04ABC60C87310 : Step 2))
start_execution_date: Inicio da Execução
time_elapsed: Tempo de Execução
step_name: Step que está em execução no momento
 ;WITH JOBDETAILS
 AS (
  SELECT DISTINCT JOB_ID = LEFT(INTR1, CHARINDEX(':', INTR1) - 1)
   ,STEP = SUBSTRING(INTR1, CHARINDEX(':', INTR1) + 1, CHARINDEX(')', INTR1) - CHARINDEX(':', INTR1) - 1)
   ,[SESSION_ID] = SPID
  FROM MASTER.DBO.SYSPROCESSES X WITH(NOLOCK)
  CROSS APPLY (
   SELECT REPLACE(X.PROGRAM_NAME, 'SQLAGENT - TSQL JOBSTEP (JOB ', '')
   ) CS(INTR1)
  WHERE SPID > 50
   AND X.PROGRAM_NAME LIKE 'SQLAGENT - TSQL JOBSTEP (JOB %'
  )
 SELECT 
  Database_name,
  NAME AS JOB_NAME,
  JD.[SESSION_ID],
  A.start_execution_date,
  CONVERT(VARCHAR, CONVERT(VARCHAR, DATEADD(ms, ( DATEDIFF(SECOND, A.start_execution_date, GETDATE()) % 86400 ) * 1000, 0), 114)) AS time_elapsed,
  d.step_name
 FROM MSDB.DBO.SYSJOBS J WITH(NOLOCK)
 INNER JOIN JOBDETAILS JD WITH(NOLOCK) ON JD.JOB_ID = CONVERT(VARCHAR(MAX), CONVERT(BINARY (16), J.JOB_ID), 1)
 INNER JOIN MSDB.DBO.SYSJOBACTIVITY A ON A.job_id = J.job_id
 INNER JOIN MSDB.DBO.SYSJOBSTEPS                   D   WITH(NOLOCK)    ON A.JOB_ID = D.JOB_ID AND ISNULL(A.LAST_EXECUTED_STEP_ID, 0) + 1 = D.STEP_ID
 --WHERE NAME LIKE '%Nome Job%';
 --WHERE JD.[SESSION_ID] = 459

Nenhum comentário:

Postar um comentário

Migrando Blog https://luizflsilva.wordpress.com/

Curtindo cada vez mais a criar conteudo que possa levar aprendizado a amantes e profissionais da area de banco de dados, estou migrando o bl...