W SQL Server, sp_help_jobschedule
procedura składowana zwraca informacje o planowaniu zadań.
Ten artykuł zawiera omówienie tej procedury składowanej wraz z przykładami.
Składnia
Oficjalna składnia wygląda następująco:
sp_help_jobschedule { [ @job_id = ] job_id | [ @job_name = ] 'job_name' }
[ , [ @schedule_name = ] 'schedule_name' ]
[ , [ @schedule_id = ] schedule_id ]
[ , [ @include_description = ] include_description ]
Gdy zadzwonisz do sp_help_jobschedule
, należy podać nazwę zadania lub jego identyfikator (ale nie oba) lub identyfikator harmonogramu. Możesz również podać nazwę harmonogramu, ale tylko w połączeniu z identyfikatorem zadania lub jego nazwą.
Przyjęta kombinacja jest nieco trudna. Zasadniczo wygląda to tak:
Jeśli schedule_id
jest określony, ani job_id
ani job_name
można określić. W przeciwnym razie job_id
lub job_name
parametry mogą być używane z schedule_name
.
Jednak nie będziesz mógł użyć schedule_id
jeśli harmonogram jest dołączony do wielu zadań.
Pamiętaj, że sp_help_jobschedule
jest w msdb bazy danych, więc trzeba ją stamtąd uruchomić. Możesz to zrobić, przechodząc do msdb baza danych (np. z USE msdb
) lub przez zakwalifikowanie procedury nazwą i schematem bazy danych (np. msdb.dbo.sp_help_jobschedule
).
Przykład
Oto przykład pokazujący, jak zwrócić wszystkie harmonogramy dołączone do konkretnego zadania:
EXEC sp_help_jobschedule
@job_name = 'SqlAgentTest';
Wynik:
Zwraca listę harmonogramów, które są dołączone do zadania określonego w @job_name
argument.
Ewentualnie mogłem przekazać @job_id
:
EXEC sp_help_jobschedule
@job_id = '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';
Ale w takim przypadku nie mogłem użyć @job_name
(to albo jedno, albo drugie).
Korzystając z identyfikatora zadania, możesz pominąć nazwę parametru, jeśli chcesz:
EXEC sp_help_jobschedule '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';
Korzystanie z @schedule_id
Parametr
Alternatywnie możesz uzyskać harmonogram na podstawie jego identyfikatora:
EXEC sp_help_jobschedule
@schedule_id = 15;
Działa to dobrze, o ile harmonogram nie jest dołączony do wielu zadań.
Oto, co się dzieje, gdy harmonogram jest dołączony do wielu zadań:
EXEC sp_help_jobschedule
@schedule_id = 14;
Wynik:
Msg 14369, Level 16, State 1, Procedure sp_help_jobschedule, Line 69 [Batch Start Line 22] The schedule ID "14" is used by more than one job. Specify the job_id.
I nawet jeśli prosi o określenie job_id
, jeśli to zrobisz, musisz usunąć schedule_id
(jak wspomniano, jeśli przekażesz schedule_id
, nie możesz dołączyć job_name
lub job_id
).
Aby to zademonstrować, jeśli po prostu dodam job_id
i zachowaj schedule_id
tam, otrzymuję następujący błąd.
EXEC sp_help_jobschedule
@job_id = '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8',
@schedule_id = 14;
Wynik:
Msg 14273, Level 16, State 1, Procedure sp_help_jobschedule, Line 51 [Batch Start Line 22] You must provide either @job_id or @job_name (and, optionally, @schedule_name), or @schedule_id.
Dołącz opis
Inną rzeczą, którą możesz zrobić, to określić, czy dołączać opis harmonogramu.
Domyślnie opis nie jest zawarty w zestawie wyników. Właściwie schedule_description
kolumna jest zawarte, ale nie zawiera opisu, chyba że wyraźnie o to poprosisz. Jeśli o to nie poprosisz, schedule_description
kolumna wyświetla (Description not requested.)
.
@include_description
parametr to bit , domyślnie 0
, co oznacza, że opis nie jest wyświetlany. Przekazywanie wartości 1
powoduje wyświetlenie opisu.
EXEC sp_help_jobschedule
@job_name = 'SqlAgentTest',
@include_description = 1;