V SQL Server, sp_help_jobschedule
uložená procedura vrací informace o plánování úloh.
Tento článek poskytuje přehled této uložené procedury včetně příkladů.
Syntaxe
Oficiální syntaxe vypadá takto:
sp_help_jobschedule { [ @job_id = ] job_id | [ @job_name = ] 'job_name' }
[ , [ @schedule_name = ] 'schedule_name' ]
[ , [ @schedule_id = ] schedule_id ]
[ , [ @include_description = ] include_description ]
Když zavoláte sp_help_jobschedule
, musíte zadat buď název úlohy nebo její ID (ale ne obojí), nebo ID plánu. Můžete také předat název plánu, ale pouze v kombinaci s ID úlohy nebo jejím názvem.
Přijatá kombinace je trochu ošidná. V zásadě to vypadá takto:
Pokud schedule_id
není zadáno ani job_id
ani job_name
lze specifikovat. Jinak job_id
nebo job_name
parametry lze použít s schedule_name
.
Nebudete však moci použít schedule_id
pokud je plán připojen k více úlohám.
Všimněte si, že sp_help_jobschedule
je v msdb databázi, takže je třeba ji spouštět odtud. Můžete to provést buď přepnutím do msdb databáze (např. pomocí USE msdb
), nebo kvalifikací postupu s názvem databáze a schématem (tj. msdb.dbo.sp_help_jobschedule
).
Příklad
Zde je příklad, který ukazuje, jak vrátit všechny plány připojené ke konkrétní úloze:
EXEC sp_help_jobschedule
@job_name = 'SqlAgentTest';
Výsledek:
Tím se vrátí seznam plánů, které jsou připojeny k úloze zadané pomocí @job_name
argument.
Případně jsem mohl předat @job_id
:
EXEC sp_help_jobschedule
@job_id = '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';
Ale v tom případě jsem nemohl použít @job_name
(je buď jedno, nebo druhé).
Při použití ID úlohy můžete vynechat název parametru, pokud si přejete:
EXEC sp_help_jobschedule '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';
Pomocí @schedule_id
Parametr
Alternativně můžete získat plán na základě jeho ID:
EXEC sp_help_jobschedule
@schedule_id = 15;
Funguje to dobře, pokud plán není připojen k více úlohám.
Co se stane, když je plán připojen k více úlohám:
EXEC sp_help_jobschedule
@schedule_id = 14;
Výsledek:
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.
A to i přesto, že požaduje zadání job_id
, pokud to uděláte, budete muset odstranit schedule_id
(jak bylo zmíněno, pokud předáte schedule_id
, nemůžete uvést job_name
nebo job_id
).
Abych to demonstroval, když jednoduše přidám job_id
a ponechte schedule_id
tam se mi zobrazí následující chyba.
EXEC sp_help_jobschedule
@job_id = '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8',
@schedule_id = 14;
Výsledek:
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.
Zahrňte popis
Další věc, kterou můžete udělat, je určit, zda chcete zahrnout popis plánu.
Ve výchozím nastavení není popis součástí sady výsledků. Vlastně schedule_description
sloupec je zahrnuto, ale neobsahuje popis, pokud si to výslovně nevyžádáte. Pokud si to nevyžádáte, schedule_description
sloupec zobrazuje (Description not requested.)
.
@include_description
parametr je bit , s výchozí hodnotou 0
, což znamená, že nezobrazuje popis. Předání hodnoty 1
způsobí zobrazení popisu.
EXEC sp_help_jobschedule
@job_name = 'SqlAgentTest',
@include_description = 1;