Jakie jest dobre narzędzie do wizualizacji zadań agenta SQL? [Zamknięte]


14

Uważam, że wbudowane narzędzia MS SQL Studio do zarządzania zadaniami agentów są trochę frustrujące. Jakie narzędzia okazały się pomocne?

Poza tym w takim narzędziu chciałbym zobaczyć trzy rzeczy:

  • Graficzne podsumowanie zadań, które uruchomiono, na jak długo i czy udało się.
  • Bieżący widok stanu, taki jak Monitor aktywności zadania, ale odświeżony w czasie prawie rzeczywistym.
  • Wygodniejszy interfejs do powielania lub modyfikowania zadań (np. Porównaj dwa kroki zadania bez blokowania przez modalne okna dialogowe).

Prawdopodobnie byłoby łatwo napisać małą aplikację, aby sobie z tym poradzić, ale ktoś z pewnością już to zrobił i zrobił to lepiej.

Jest to oczywiście subiektywne pytanie, więc jeśli jakiś mod wędruje obok, możesz go zmienić w CW.

Odpowiedzi:


13

Czy trochę googlowania w okolicy i oto niektóre oprogramowanie, które może Cię zainteresować:

  1. Menedżer zadań SQL https://www.idera.com/productssolutions/freetools/sqljobmanager

  2. Zapytanie Aktualnie uruchomione zadania agenta SQL Server http://sqlconcept.com/2011/06/25/how-to-query-currently-running-sql-server-agent-jobs/

Jeśli ktoś ma więcej linków do dodania, śmiało!


W przypadku punktu 3 zapytanie dotyczące łącza i uwagi znajdują się tutaj -

Dzisiaj poszedłem na poszukiwanie sposobu, aby wyświetlić listę wszystkich aktualnie uruchomionych zadań agenta SQL Server. Jak co drugi quest, ten również zaczął się od Google. :)

W ciągu 2 minut znalazłem ten świetny post Brenta Ozara na SQLServerPedia. Dlaczego ten post jest taki świetny? Jest tak świetny, ponieważ Brent doszedł do wniosku, że jeśli zapytasz tylko tabele sysjobs i sysjobhistory, nie uzyskasz dokładnego aktualnego statusu pracy. Tj. W tabeli sysjobhistory masz jednak kolumnę run_status (chociaż zgodnie z BOL możliwe wartości dla tej kolumny to „Status wykonania zadania: 0 = nieudany, 1 = zakończony powodzeniem, 2 = ponów próbę, 3 = anulowano, 4 = W toku ”) w rzeczywistości wartość nigdy nie będzie wynosić 4 (W toku). W rzeczywistości w tabeli sysjobhistory przechowywane są dane historyczne każdego wykonanego kroku zadania, co oznacza, że ​​status kroku jest aktualizowany dopiero po wykonaniu następnego kroku. Innymi słowy, tabela NIE jest aktualizowana w czasie rzeczywistym ani co drugą sekundę.

Brent zorientował się, że istnieje nieudokumentowana procedura przechowywana sys.xp_sqlagent_enum_jobs, która jest częścią sp_help_job, która może nadać bieżący status wykonania zadania agenta.

Mimo że znalazłem sposób na uzyskanie aktualnie uruchomionych zadań, nie byłem zadowolony z tego skryptu, ponieważ działa on tylko na SQL 2005/2008.

Co powinienem zrobić, jeśli mam instancję SQL 2000 i jestem bardzo ciekawy aktualnie uruchomionych zadań?

Przy odrobinie pomocy Tima Chapmana (mistrza www.SQLServerNation.com) wymyśliłem, jak to zrobić. DZIĘKUJĘ, Tim!

Oto ostatni skrypt, który będzie działał na SQL 2000, 2005 i 2008, i który dostarczy Ci aktualnie uruchomione zadania agenta SQL Server. (Jak widać, różnica w skrypcie Brenta jest bardzo niewielka: zamiast „sys.xp_sqlagent_enum_jobs” Używam „master.dbo.xp_sqlagent_enum_jobs” i ograniczam zestaw wyników, aby uzyskać tylko aktualnie uruchomione zadania, używając „where x . bieganie = 1 ″).

Proste jak to jest. Cieszyć się.

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

Próbowałem SQLjobvisa; pozwala mi trochę wizualizować harmonogram, ale tak naprawdę nie jest to nic lepszego niż to, co mógłbym zrobić dla siebie w ciągu godziny. Ustawiłbym oś czasu pionowo, aby użytkownicy mogli łatwo przewijać dni.
— Jon of All Trades

3

Wiem, że to starszy post i osobiście miałem ten sam problem. Zarządzanie wieloma zadaniami agenta SQL w wielu instancjach, dlatego zdecydowałem się utworzyć SQL Agent Insight , który można znaleźć tutaj> http://brentec.ca . Jest to produkt ewoluujący, który wkrótce wyjdzie z wersji beta i jest stale aktualizowany, a sugestie są mile widziane. Jest to projekt, nad którym pracuję w czasie wolnym, kiedy się konsultuję, a także mam pełny etat, ale jeśli sugestie są tego warte, zostaną umieszczone w leju na przyszłość.

Obecnie jest to tylko narzędzie do monitorowania agenta SQL, z pewnymi możliwościami skryptowymi. Obecnie siedzi w wersji 0.11 z 2-3 aktualizacjami rocznie i ma dane kontaktowe w celu uzyskania pomocy. Tak, w tej chwili nie ma pomocy online, ale ponieważ jest to produkt przeznaczony tylko do odczytu, monitorowanej instancji SQL nie można wyrządzić żadnych szkód.


2

Czy próbowałeś funkcji raportów?

Kliknij prawym przyciskiem myszy SQL Agent => Raporty => standardowe raporty


Nie zrobiłem tego, ale nie są zbyt pomocne. Są dwa i pokazują tylko liczbę wykonań oraz średni czas działania.
— Jon of All Trades

Dla jasności nie wykluczam raportów SQL Studio, jeśli ktoś ma przydatny raport, którym chciałby się podzielić.
— Jon of All Trades


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.