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
isysjobs_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.