Что такое хороший инструмент для визуализации заданий агента SQL? [закрыто]

14

Я нахожу, что встроенные инструменты MS SQL Studio для управления заданиями агента немного расстраивают. Какие инструменты вы нашли полезными?

Случайно, есть три вещи, которые я хотел бы видеть в таком инструменте:

  • Графическое резюме того, какие задания выполнялись, когда, как долго и успешно ли они выполнялись.
  • Представление текущего состояния, например монитор активности заданий, но обновленное почти в реальном времени.
  • Более удобный интерфейс для дублирования или изменения заданий (например, сравнение двух шагов задания без блокировки модальными диалоговыми окнами).

Вероятно, было бы просто написать небольшое приложение, чтобы справиться с этим, но кто-то наверняка уже сделал это, и сделал это лучше.

Это, очевидно, субъективный вопрос, поэтому, если какой-то мод проходит мимо, не стесняйтесь сделать его CW.

Джон на все руки
источник

Ответы:

13

Поискали, и вот некоторые программы, которые могут вас заинтересовать:

  1. Диспетчер заданий SQL https://www.idera.com/productssolutions/freetools/sqljobmanager

  2. Запрос, в настоящее время выполняющий задания агента SQL Server http://sqlconcept.com/2011/06/25/how-to-query-currently-running-sql-server-agent-jobs/

Если у кого-то есть еще ссылки, продолжайте!


Для пункта 3 ссылка на ссылку и примечания находятся здесь -

Сегодня я отправился на поиски способа найти список всех запущенных в настоящий момент заданий агента SQL Server. Как и любой другой квест, этот также начался с Google-ING. :)

В течение 2 минут я нашел этот замечательный пост от Brent Ozar на SQLServerPedia. Почему этот пост так хорош? Это так здорово, потому что Брент решил, что если вы будете запрашивать только таблицы sysjobs и sysjobhistory, вы не получите точный текущий статус работы. Т.е. в таблице sysjobhistory у вас есть столбец run_status, однако (даже если в соответствии с BOL для этого столбца возможны следующие значения: «Статус выполнения задания: 0 = Сбой, 1 = Успешно, 2 = Повтор, 3 = Отменено, 4» = В процессе ») в действительности значение никогда не будет равно 4 (В процессе). Фактически в таблице sysjobhistory хранятся исторические данные каждого выполненного шага задания, что означает, что статус шага обновляется только после выполнения следующего шага. Другими словами, таблица НЕ обновляется ни в режиме реального времени, ни через секунду.

Итак, Брент выяснил, что существует недокументированная хранимая процедура sys.xp_sqlagent_enum_jobs, которая является частью sp_help_job, которая может дать текущий статус выполнения задания агента.

Несмотря на то, что я нашел способ получить текущие задания, я не был доволен этим сценарием, поскольку он работает только на SQL 2005/2008.

Что мне делать, если у меня есть экземпляр SQL 2000, и мне очень интересно узнать о текущих выполняемых заданиях?

С небольшой помощью Тима Чепмена (мастер www.SQLServerNation.com) я понял, как это сделать. СПАСИБО, Тим!

Вот последний скрипт, который будет работать на SQL 2000, 2005 и 2008, и который даст вам текущие задания агента SQL Server. (Как видите, разница со сценарием Брента очень мала: вместо «sys.xp_sqlagent_enum_jobs» я использую «master.dbo.xp_sqlagent_enum_jobs», и я ограничиваю результирующий набор, чтобы получать только текущие рабочие места, используя «где x .running = 1 ″).

Все просто, как есть. Наслаждаться.

IF EXISTS (SELECT *
FROM    tempdb.dbo.sysobjects
WHERE   id = OBJECT_ID(N'[tempdb].[dbo].[Temp1]')
)
DROP TABLE [tempdb].[dbo].[Temp1]
GO
CREATE TABLE [tempdb].[dbo].[Temp1]
(
job_id uniqueidentifier NOT NULL,
last_run_date nvarchar (20) NOT NULL,
last_run_time nvarchar (20) NOT NULL,
next_run_date nvarchar (20) NOT NULL,
next_run_time nvarchar (20) NOT NULL,
next_run_schedule_id INT NOT NULL,
requested_to_run INT NOT NULL,
request_source INT NOT NULL,
request_source_id sysname
COLLATE database_default NULL,
running INT NOT NULL,
current_step INT NOT NULL,
current_retry_attempt INT NOT NULL,
job_state INT NOT NULL)
DECLARE @job_owner   sysname
DECLARE @is_sysadmin   INT
SET @is_sysadmin   = isnull (is_srvrolemember ('sysadmin'), 0)
SET @job_owner   = suser_sname ()
INSERT INTO [tempdb].[dbo].[Temp1]

--EXECUTE sys.xp_sqlagent_enum_jobs @is_sysadmin, @job_owner
EXECUTE master.dbo.xp_sqlagent_enum_jobs @is_sysadmin, @job_owner
UPDATE [tempdb].[dbo].[Temp1]
SET last_run_time    = right ('000000' + last_run_time, 6),
next_run_time    = right ('000000' + next_run_time, 6);
-----
SELECT j.name AS JobName,
j.enabled AS Enabled,
CASE x.running
WHEN 1
THEN
'Running'
ELSE
CASE h.run_status
WHEN 2 THEN 'Inactive'
WHEN 4 THEN 'Inactive'
ELSE 'Completed'
END
END
AS CurrentStatus,
coalesce (x.current_step, 0) AS CurrentStepNbr,
CASE
WHEN x.last_run_date > 0
THEN
convert (datetime,
substring (x.last_run_date, 1, 4)
+ '-'
+ substring (x.last_run_date, 5, 2)
+ '-'
+ substring (x.last_run_date, 7, 2)
+ ' '
+ substring (x.last_run_time, 1, 2)
+ ':'
+ substring (x.last_run_time, 3, 2)
+ ':'
+ substring (x.last_run_time, 5, 2)
+ '.000',
121
)
ELSE
NULL
END
AS LastRunTime,
CASE h.run_status
WHEN 0 THEN 'Fail'
WHEN 1 THEN 'Success'
WHEN 2 THEN 'Retry'
WHEN 3 THEN 'Cancel'
WHEN 4 THEN 'In progress'
END
AS LastRunOutcome,
CASE
WHEN h.run_duration > 0
THEN
(h.run_duration / 1000000) * (3600 * 24)
+ (h.run_duration / 10000 % 100) * 3600
+ (h.run_duration / 100 % 100) * 60
+ (h.run_duration % 100)
ELSE
NULL
END
AS LastRunDuration
FROM          [tempdb].[dbo].[Temp1] x
LEFT JOIN
msdb.dbo.sysjobs j
ON x.job_id = j.job_id
LEFT OUTER JOIN
msdb.dbo.syscategories c
ON j.category_id = c.category_id
LEFT OUTER JOIN
msdb.dbo.sysjobhistory h
ON     x.job_id = h.job_id
AND x.last_run_date = h.run_date
AND x.last_run_time = h.run_time
AND h.step_id = 0
where x.running = 1
wingedrhino
источник
Я дал SQLjobvis попробовать; это позволяет мне немного визуализировать расписание, но на самом деле оно не лучше, чем то, что я мог бы сделать для себя за час. Я бы поставил ось времени вертикально, чтобы пользователи могли легко прокручивать дни.
Джон на все руки
3

Я знаю, что это старый пост, и лично у меня была такая же проблема. Управление несколькими заданиями агента SQL в нескольких экземплярах, поэтому я решил создать SQL Agent Insight , который можно найти здесь> http://brentec.ca . Это развивающийся продукт, который выйдет из бета-версии в ближайшем будущем, и он постоянно обновляется, и предложения приветствуются. Это проект, над которым я работаю в свободное время, когда я консультируюсь, и у меня также есть постоянный концерт, но если предложения того стоят, они попадают в бункер на будущее.

В настоящее время это просто инструмент мониторинга для агента SQL с некоторыми возможностями сценариев. В настоящее время работает на версии 0.11 с 2-3 обновлениями в год и имеет контактную информацию для некоторой помощи. Да, прямо сейчас, нет никакой онлайн-справки, но, поскольку это в значительной степени продукт, предназначенный только для чтения, не может быть нанесен ущерб отслеживаемому экземпляру SQL.

казарка
источник
2

Вы пробовали использовать функцию отчетов?

Щелкните правой кнопкой мыши на агенте SQL => Отчеты => стандартные отчеты

РК Куппала
источник
Я не сделал, но они не очень полезны. Их два, и они просто показывают количество выполнений и среднее время выполнения.
Джон на все руки
Чтобы быть ясным, я не исключаю отчетов SQL Studio, если у кого-то есть полезный отчет, которым он хотел бы поделиться.
Джон на все руки
2

Я не уверен, что это удовлетворяет всем вашим критериям, но вы можете посмотреть на это:

http://www.sqlsoft.co.uk/sqljobvis.php

Генри Ли
источник
Веб-сайт заставляет меня немного опасаться запускать их .exe. Некоторая контактная информация будет началом.
Джон на все руки
2

Еще один добавить в список:

Что мне нравится в этом, так это то, что он интегрируется с другими компонентами, такими как планировщик Windows и задачи Oracle.

Спасибо Марку за то, что он поднял этот вопрос, когда я спросил о Кучи.

stanleykylee
источник