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

4 sposoby na uzyskanie listy harmonogramów w programie SQL Server Agent (T-SQL)

W tym artykule przedstawiam cztery opcje używania T-SQL do zwracania harmonogramów, które są dołączone do zadania SQL Server Agent.

Opcje

Możesz użyć następujących opcji T-SQL, aby zwrócić harmonogramy zadania SQL Server Agent:

  • Opcja 1 :Wykonaj sp_help_job procedura składowana.
  • Opcja 2 :Wykonaj sp_help_schedule procedura składowana.
  • Opcja 3 :Wykonaj sp_help_jobschedule procedura składowana.
  • Opcja 4 :Zapytaj sysschedules tabeli (i dołącz do niej za pomocą sysjobschedules i sysjobs_view ).

Wszystkie te opcje znajdują się w msdb bazy danych, a zatem 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.sysschedules ).

Opcja 1:sp_help_job Zapisana procedura

Gdy zadzwonisz do sp_help_job bez żadnych argumentów, po prostu zwraca listę zadań. Ale kiedy podasz nazwę lub identyfikator zadania, wyświetla listę szczegółów tego zadania, w tym jego harmonogramów.

Oto przykład:

USE msdb;
EXEC sp_help_job 
	@job_name = 'SqlAgentTest';

Wynik:

Wyświetla to zadanie, a także wszelkie kroki zadania, harmonogramy i serwery docelowe. W takim przypadku do zadania dołączone są dwa harmonogramy.

Oto przykład kodu przy użyciu identyfikatora:

EXEC sp_help_job 
	@job_id = '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';

Używając identyfikatora, możesz pominąć nazwę parametru, jeśli chcesz.

Przykład:

EXEC sp_help_job '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';

Składnia

Pełna składnia sp_help_job idzie tak:

sp_help_job { [ @job_id = ] job_id  
[ @job_name = ] 'job_name' }   
     [ , [ @job_aspect = ] 'job_aspect' ]   
     [ , [ @job_type = ] 'job_type' ]   
     [ , [ @owner_login_name = ] 'login_name' ]   
     [ , [ @subsystem = ] 'subsystem' ]   
     [ , [ @category_name = ] 'category' ]   
     [ , [ @enabled = ] enabled ]   
     [ , [ @execution_status = ] status ]   
     [ , [ @date_comparator = ] 'date_comparison' ]   
     [ , [ @date_created = ] date_created ]   
     [ , [ @date_last_modified = ] date_modified ]   
     [ , [ @description = ] 'description_pattern' ]

Zobacz dokumentację Microsoft dla sp_help_job dla wyjaśnienia każdego parametru, a także wartości, które każdy akceptuje.

Opcja 2:sp_help_schedule Zapisana procedura

sp_help_schedule procedura składowana została zaprojektowana specjalnie z myślą o harmonogramach zwrotów.

Jeśli wykonasz go bez przekazywania żadnych argumentów, zwróci wszystkie harmonogramy w instancji:

EXEC sp_help_schedule;

Aby uzyskać informacje o określonym harmonogramie, podaj nazwę harmonogramu lub jego identyfikator:

EXEC sp_help_schedule
	@schedule_name = 'Run_Sat_6AM';

Chociaż sp_help_schedule nie zwraca harmonogramów dla określonego zadania, możesz go użyć do zwrócenia tylko tych harmonogramów, które są dołączone do zadania.

@attached_schedules_only parametr to bit , domyślnie 0 , co oznacza, że ​​zwraca zarówno dołączone, jak i niedołączone harmonogramy. Przekazywanie wartości 1 ogranicza to tylko do dołączonych harmonogramów.

Przykład:

EXEC sp_help_schedule
	@attached_schedules_only = 1;

Inną rzeczą, którą możesz zrobić, to użyć @include_description parametr, aby określić, czy dołączyć opis harmonogramu do zestawu wyników.

Zobacz Korzystanie z sp_help_schedule w SQL Server, aby uzyskać więcej informacji i przykładów.

Opcja 3:sp_help_jobschedule Zapisana procedura

sp_help_jobschedule procedura składowana zwraca informacje o planowaniu zadań.

Przykład:

EXEC sp_help_jobschedule
	@job_name = 'SqlAgentTest';

Zwraca to listę harmonogramów, które są dołączone do określonego zadania.

Możesz również przekazać identyfikator lub nazwę harmonogramu, aby zwrócić tylko ten harmonogram.

Gdy zadzwonisz do sp_help_jobschedule , należy podać nazwę zadania lub jego identyfikator (ale nie oba) lub identyfikator harmonogramu. Możesz także przekazać schedule_name ale tylko w połączeniu z identyfikatorem zadania lub jego nazwą.

Przyjęta kombinacja argumentów jest nieco trudna. Zobacz Korzystanie z sp_help_jobschedule w SQL Server, aby uzyskać bardziej szczegółowe wyjaśnienie i więcej przykładów.

Opcja 4:sysschedules stół (i inne)

Możesz zapytać o sysschedules tabeli i połącz ją z tabelami takimi jak sysjobschedules i sysjobs_view aby zwrócić listę zadań i związanych z nimi harmonogramów.

Przykład:

SELECT
	jv.name,
	jv.description,
	s.schedule_id,
	s.name,
	s.freq_type,
	s.freq_interval,
	s.freq_subday_type,
	s.freq_subday_interval,
	js.next_run_date,
	js.next_run_time
FROM msdb.dbo.sysjobs_view jv
INNER JOIN msdb.dbo.sysjobschedules js
ON jv.job_id = js.job_id
INNER JOIN msdb.dbo.sysschedules s
ON s.schedule_id = js.schedule_id
ORDER BY jv.name, s.name;

Wynik:

W tym przypadku użyłem złączeń wewnętrznych, aby zwrócić tylko harmonogramy, które mają skojarzone zadanie i na odwrót.

Możesz przełączyć się na prawe złączenia, aby zwrócić wszystkie harmonogramy, niezależnie od tego, czy są one dołączone do zadania, lub na złączenia lewostronne, aby zwrócić wszystkie zadania, niezależnie od tego, czy mają dołączony harmonogram. Możesz też użyć pełnych złączeń, aby po prostu zwrócić wszystko.


  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 zastosować posiadanie klauzuli z grupą przez w Select Query — samouczek SQL Server / TSQL, część 131

  2. Skalarne wstawianie UDF w SQL Server 2019

  3. Dziennik transakcji SQL Server — część 2

  4. Typy kursorów programu SQL Server — Statyczny kursor tylko do przodu | Samouczek SQL Server / Samouczek TSQL

  5. Oblicz całkowity koszt monitorowania serwera SQL