Який хороший інструмент для візуалізації завдань SQL Agent? [зачинено]


14

Мені здається, що вбудовані інструменти MS SQL Studio для управління завданнями агента трохи засмучують. Які інструменти там вам здалися корисними?

Негайно, у такому інструменті я хотів би побачити три речі:

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

Напевно, було б просто написати невелику програму, щоб впоратися з цим, але хтось напевно це вже зробив, і зробив це краще.

Це, очевидно, суб'єктивне питання, тому якщо мода якогось типу блукає повз, сміливо зробіть це CW.

Відповіді:


13

Ви щось гуглили, і ось програмне забезпечення, яке може вас зацікавити:

  1. SQL Job Manager 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 хвилин я знайшов цей чудовий пост Брента Озара на SQLServerPedia. Чому ця публікація така чудова? Це так чудово, тому що Брент подумав, що якщо ви будете запитувати лише таблиці sysjobs та sysjobhistory, ви не отримаєте точного поточного статусу роботи. Тобто в таблиці sysjobhistory у вас є стовпець run_status (хоча згідно BOL можливі значення для цього стовпця є «Статус виконання завдання: 0 = Не вдалося, 1 = Успішно, 2 = Повторити, 3 = Скасовано, 4 = В процесі ») насправді значення ніколи не буде 4 (У процесі). Власне, в таблиці систематичної історії зберігаються історичні дані про кожен виконаний крок завдання, що означає, що стан кроку оновлюється лише після виконання наступного кроку. Іншими словами, таблиця НЕ оновлюється в режимі реального часу, ані кожної другої секунди.

Отже, Брент зрозумів, що існує незадокументована збережена процедура sys.xp_sqlagent_enum_jobs, яка є частиною sp_help_job, яка може надати поточний статус виконання Агентської роботи.

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

Що мені робити, якщо у мене є екземпляр SQL 2000 і мені дуже цікаво виконувати поточні завдання?

За допомогою допомоги Тіма Чапмена (майстра www.SQLServerNation.com) я зрозумів, як це зробити. ДЯКУЮ, Тим!

Ось підсумковий сценарій, який запускатиметься в SQL 2000, 2005 та 2008 роках, і який дасть вам поточні завдання агента SQL Server. (Як ви бачите, різниця у сценарії Brent дуже мала: замість "sys.xp_sqlagent_enum_jobs" я використовую "master.dbo.xp_sqlagent_enum_jobs"), і я обмежую набір результатів отримувати лише поточні завдання, використовуючи "де x .ріння = 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

Я спробував SQLjobvis; це дозволяє мені трохи візуалізувати графік, але це насправді не краще, ніж те, що я міг би зробити для себе за годину. Я поставив би часову вісь вертикально, щоб користувачі могли легко прокручувати дні.
Джон усіх торгів

3

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

В даний час це лише інструмент моніторингу агента SQL, який має певні можливості сценарію. Наразі працює у версії 0.11 з 2-3 оновленнями на рік та має контактну інформацію для отримання допомоги. Так, зараз немає жодної допомоги в Інтернеті, але, оскільки це досить-таки продукт, доступний лише для читання, шкода відстежуваному екземпляру SQL не може бути завдана.


2

Ви спробували функцію звітів?

Клацніть правою кнопкою миші на SQL Agent => Звіти => стандартні звіти


Я ні, але вони не дуже корисні. Їх два, і вони просто показують кількість страт і середній час виконання.
Йон усіх торгів

Щоб було зрозуміло, я не виключаю звітів SQL Studio, якщо хтось має корисний звіт, яким він хотів би поділитися.
Йон усіх торгів


2

Ще один, який потрібно додати до списку:

Одне, що мені подобається в цьому, - це те, що він інтегрується з іншими компонентами, такими як завдання Windows Scheduler та Oracle.

Дякую Марку за те, що це підняв, коли я запитав у The Heap.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.