Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

4 sposoby na uzyskanie historii zadań SQL Server

W tym artykule przedstawiam cztery opcje zwracania danych historii zadań SQL Server Agent.

Opcje

Dołączyłem dwie opcje GUI i dwie opcje T-SQL:

  • Opcja 1 :Użyj GUI SSMS.
  • Opcja 2 :Użyj interfejsu graficznego Azure Data Studio (za pośrednictwem rozszerzenia SQL Server Agent)
  • Opcja 3 :Wykonaj sp_help_jobhistory procedura składowana.
  • Opcja 4 :Zapytaj sysjobhistory tabeli (i dołącz do niej za pomocą sysjobs_view widok lub sysjobs stół).

Obiekty SQL Server Agent znajdują się w msdb bazy danych, a więc opcje T-SQL muszą być uruchamiane w tej bazie danych. Możesz to zrobić, przechodząc do msdb bazy danych lub przez odpowiednią kwalifikację obiektu (np. msdb.dbo.sysjobhistory ).

Opcja 1:Użyj GUI SSMS

Możesz użyć graficznego interfejsu użytkownika SQL Server Management Studio (SSMS), aby wyświetlić historię zadań.

Możesz to zrobić, rozwijając węzeł SQL Server Agent w Eksploratorze obiektów, a następnie klikając prawym przyciskiem myszy Praca i wybierając Wyświetl historię z menu kontekstowego:

Spowoduje to otwarcie nowego okna z historią wszystkich zadań w przeglądarce plików dziennika:

Historię pojedynczego zadania można wyświetlić, usuwając zaznaczenie innych zadań na tym ekranie. Alternatywnie możesz zlokalizować to zadanie w Eksploratorze obiektów i kliknąć je prawym przyciskiem myszy.

Zobacz Wyświetlanie historii zadań agenta programu SQL Server za pomocą programu SSMS, aby uzyskać więcej informacji i zrzuty ekranu.

Opcja 2:Użyj interfejsu graficznego Azure Data Studio

Jeśli używasz Azure Data Studio, możesz o tym nie wiedzieć, ale masz również możliwość przeglądania historii zadań agenta programu SQL Server.

Sposobem na to jest użycie rozszerzenia SQL Server Agent.

Oto jak to wygląda:

Na tym ekranie patrzymy na historię zadania o nazwie BackupKrankyKranesDB .

Historia pracy jest wymieniona w lewym okienku. Możesz kliknąć każdy element w lewym okienku historii, aby wyświetlić szczegóły tego elementu w prawym okienku.

W chwili pisania tego tekstu wydaje się, że możesz przeglądać historię tylko jednej pracy na raz.

Zobacz Wyświetlanie historii zadań agenta SQL Server w Azure Data Studio, aby uzyskać więcej informacji i zrzuty ekranu.

Opcja 3:sp_help_jobhistory Zapisana procedura

Jeśli wolisz (lub potrzebujesz) wykonywać swoje zadania w T-SQL, wtedy sp_help_jobhistory procedura składowana jest dla Ciebie szybką i łatwą opcją.

Gdy zadzwonisz do sp_help_jobhistory bez żadnych argumentów zwraca historię wszystkich zadań. Ale kiedy podasz nazwę lub identyfikator zadania, wyświetla się tylko historia tego jednego zadania.

Oto przykład:

EXEC msdb.dbo.sp_help_jobhistory;

Wynik:

Pamiętaj, że sp_help_jobhistory znajduje się w msdb bazy danych, więc musisz upewnić się, że uruchamiasz ją stamtąd. Możesz to zrobić albo przechodząc do tej bazy danych (np. za pomocą USE msdb ) lub przez zakwalifikowanie procedury składowanej do bazy danych i schematu (np. msdn.dbo.sp_help_jobhistory ).

Możesz uzyskać historię pojedynczego zadania, przekazując identyfikator lub nazwę tego zadania jako argument.

Przykład:

EXEC msdb.dbo.sp_help_jobhistory
	@job_name = 'BackupKrankyKranesDB';

Możesz także użyć @mode parameter aby określić, czy zwracać wszystkie kolumny w zestawie wyników (FULL ) lub po prostu podsumowanie (SUMMARY ).

EXEC msdb.dbo.sp_help_jobhistory
	@job_name = 'BackupKrankyKranesDB',
	@mode = 'FULL';

Wartość domyślna to SUMMARY .

Opcja 4:sysjobhistory Tabela

sysjobhistory table to tabela przechowująca dane historii zadań.

Jak w przypadku każdego stołu, możesz po prostu zrobić coś takiego:

SELECT * FROM msdb.dbo.sysjobhistory;

To zwróci wszystkie kolumny w tabeli.

Jednak ta tabela nie przechowuje nazwy zadania (lub opisu zadania itp.). Aby uzyskać te dane, musisz połączyć tę tabelę z innymi tabelami/widokami, takimi jak sysjobs_view widok lub sysjobs stół. To zapewni pełniejszy zestaw wyników.

Poniżej znajduje się zapytanie, którego możesz użyć, aby zwrócić pełniejsze dane.

SELECT jv.name AS Job,
		jh.step_name AS Step,
		msdb.dbo.AGENT_DATETIME(jh.run_date, jh.run_time) AS RunDateTime,
		STUFF(STUFF(STUFF(RIGHT(REPLICATE('0', 8) + CAST(jh.run_duration as varchar(8)), 8), 3, 0, ':'), 6, 0, ':'), 9, 0, ':') AS RunDuration
FROM msdb.dbo.sysjobs_view jv
INNER JOIN msdb.dbo.sysjobhistory jh
ON jv.job_id = jh.job_id
ORDER BY Job, RunDateTime;

Wynik:

Możesz dodać więcej kolumn do SELECT lista zgodnie z wymaganiami.

Jeśli zastanawiasz się, dlaczego to zapytanie wykorzystuje całą masę dodatkowych elementów, takich jak AGENT_DATETIME() funkcja STUFF() funkcja, RIGHT() , CAST() i REPLICATE() , to ze względu na sposób, w jaki sysjobhistory przechowuje swoje wartości daty i godziny.

Gdybym nie korzystał z tych funkcji, wartości datetime byłyby mniej czytelne.

W szczególności run_date , run_time i run_duration kolumny przechowują swoje dane jako int wartości. Domyślnie dane w tych kolumnach wyglądają tak:

To może utrudnić niektórym z nas, ludzi, czytanie. Zwłaszcza run_duration kolumna. Dlatego użyliśmy różnych funkcji w powyższym zapytaniu, aby przedstawić te kolumny w formacie bardziej czytelnym dla człowieka.

Możesz zauważyć, że sp_help_jobhistory procedura składowana ma ten sam problem.

Powinienem również wspomnieć, że AGENT_DATE() wydaje się być funkcją nieudokumentowaną.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak ustawić domyślny język dla wszystkich nowych loginów w SQL Server (T-SQL)

  2. Jak utworzyć klucz obcy w SQL Server?

  3. Skutecznie rozwiąż problem z bazą danych SQL Server utknął w trybie podejrzanym

  4. Utwórz profil poczty bazy danych (SSMS)

  5. WYBIERZ WYRÓŻNIENIE w jednej kolumnie