Original

You are currently reviewing an older revision of this page.
Go to current version

Вся информация о Job`ах хранится в системной БД msdb. Например весь их перечень находится в таблице msdb.dbo.sysjobs.
Ход выполнения конкретного джоба можно отслеживать через системные представления, при этом не только отслеживая, когда и под кем он был запущен, а так же кто его блокирует в данный момент и даже текущий запрос, который выполняется в этом джобе.

select   j.name       -- Имя задания
     , r.session_id -- Идентификатор сеанса, к которому относится данный запрос
     , r.start_time -- Временная метка поступления запроса
     , r.status     -- Состояние запроса
     , r.blocking_session_id -- Идентификатор сеанса, блокирующего данный запрос
     , r.wait_time -- Если запрос в настоящий момент блокирован,
                 -- в столбце содержится продолжительность текущего ожидания (в миллисекундах)
     , r.cpu_time  -- Процессорное время (в миллисекундах), затраченное на выполнение запроса
     , r.total_elapsed_time -- Общее время, истекшее с момента поступления запроса (в миллисекундах)
     , r.reads              -- Число операций чтения, выполненных данным запросом
     , r.writes             -- Число операций записи, выполненных данным запросом
     , r.logical_reads      -- Число логических операций чтения, выполненных данным запросом
     , t.text               -- Текст SQL-запроса
  from sys.dm_exec_requests r
    inner join sys.dm_exec_sessions s
      on r.session_id = s.session_id
    cross apply sys.dm_exec_sql_text ( sql_handle ) t
    inner join msdb.dbo.sysjobs j
      on s.program_name like '%' + master.dbo.fn_varbintohexstr( j.job_id ) + '%'
  where j.name = N'Имя задания'

Вариант для SQL Server 2005 и выше.

 

 

 

 

 

Revert to this revision