Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 как узнать какой сейчас джоб выполняется  [new]
marvel
Member

Откуда:
Сообщений: 1066
как узнать какой сейчас джоб выполняется? думаю где то в системный таблицах это отражено, но не нашел в интернете информации
Спасибо.
3 апр 15, 12:04    [17468603]     Ответить | Цитировать Сообщить модератору
 Re: как узнать какой сейчас джоб выполняется  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
exec msdb..sp_help_job @execution_status = 1;
3 апр 15, 12:07    [17468633]     Ответить | Цитировать Сообщить модератору
 Re: как узнать какой сейчас джоб выполняется  [new]
stavgreengo
Member

Откуда:
Сообщений: 710
можно просто посмотреть в монитор активных заданий в SSMS
3 апр 15, 12:08    [17468640]     Ответить | Цитировать Сообщить модератору
 Re: как узнать какой сейчас джоб выполняется  [new]
o-o
Guest
stavgreengo
можно просто посмотреть в монитор активных заданий в SSMS

а можно и не посмотреть.
когда у тебя, например, есть CONTROL SERVER/IMPERSONATE ON SA,
но ты не сисадмин (агент вообще "не видно", и попробуй запусти OE с execute as login = 'sa').
а sp_help_job покажет
3 апр 15, 12:15    [17468674]     Ответить | Цитировать Сообщить модератору
 Re: как узнать какой сейчас джоб выполняется  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
SELECT
	  j.job_id
	, j.name
	, j.date_modified
	, j.[enabled]
	, last_run_time = msdb.dbo.agent_datetime(h.run_date, h.run_time)
	, last_run_duration = STUFF(STUFF(RIGHT('000000' + CONVERT(VARCHAR(8), run_duration), 6), 5, 0, ':'), 3, 0, ':')
	, sql_severity = ISNULL(h2.sql_severity, 0)
	, run_status =
		CASE h.run_status
			WHEN 0 THEN 'FAILED'
			WHEN 1 THEN 'SUCCEEDED'
			WHEN 2 THEN 'RETRY'
			WHEN 3 THEN 'CANCELED'
			WHEN 4 THEN 'RUNNING'
		END
FROM msdb.dbo.sysjobs j
LEFT JOIN (
	SELECT
		  job_id
		, run_date
		, run_time
		, run_status
		, run_duration
		, RowNumber = ROW_NUMBER() OVER (PARTITION BY job_id ORDER BY run_date DESC, run_time DESC) 
	FROM msdb.dbo.sysjobhistory
	WHERE step_id = 0
) h ON h.job_id = j.job_id AND h.RowNumber = 1
LEFT JOIN (
	SELECT job_id, sql_severity = MAX(sql_severity)
	FROM msdb.dbo.sysjobhistory
	WHERE sql_severity != 0
	GROUP BY job_id
) h2 ON h2.job_id = j.job_id
6 апр 15, 17:09    [17480116]     Ответить | Цитировать Сообщить модератору
 Re: как узнать какой сейчас джоб выполняется  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Скузи. Вот правильный запрос:

SELECT
	  j.job_id
	, j.name
	, j.[enabled]
	, last_run_time = msdb.dbo.agent_datetime(h.run_date, h.run_time)
	, last_run_duration = STUFF(STUFF(RIGHT('000000' + CONVERT(VARCHAR(8), h.run_duration), 6), 5, 0, ':'), 3, 0, ':')
	, is_run = CASE WHEN r.job_id IS NULL THEN 0 ELSE 1 END
FROM msdb.dbo.sysjobs j
LEFT JOIN (
	SELECT a.job_id
	FROM msdb.dbo.sysjobactivity a
	JOIN msdb.dbo.syssessions s ON s.session_id = a.session_id
	JOIN (
		SELECT MAX(agent_start_date) AS max_agent_start_date
		FROM msdb.dbo.syssessions
	) s2 ON s.agent_start_date = s2.max_agent_start_date
	WHERE a.run_requested_date IS NOT NULL
		AND a.stop_execution_date IS NULL
) r ON r.job_id = j.job_id
LEFT JOIN (
	SELECT
		  job_id
		, run_date
		, run_time
		, run_duration
		, RowNumber = ROW_NUMBER() OVER (PARTITION BY job_id ORDER BY run_date DESC, run_time DESC) 
	FROM msdb.dbo.sysjobhistory
	WHERE step_id = 0
) h ON h.job_id = j.job_id AND h.RowNumber = 1
ORDER BY j.name
6 апр 15, 17:47    [17480274]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить