I SQL Server er sp_help_jobschedule
lagret procedure returnerer information om planlægning af job.
Denne artikel giver et overblik over denne lagrede procedure inklusive eksempler.
Syntaks
Den officielle syntaks lyder sådan her:
sp_help_jobschedule { [ @job_id = ] job_id | [ @job_name = ] 'job_name' }
[ , [ @schedule_name = ] 'schedule_name' ]
[ , [ @schedule_id = ] schedule_id ]
[ , [ @include_description = ] include_description ]
Når du ringer til sp_help_jobschedule
, skal du angive enten jobnavnet eller dets id (men ikke begge dele) eller tidsplan-id'et. Du kan også videregive tidsplanens navn, men kun i kombination med job-id'et eller dets navn.
Den accepterede kombination er lidt tricky. Grundlæggende går det sådan her:
Hvis schedule_id
er angivet, hverken job_id
heller ikke job_name
kan specificeres. Ellers job_id
eller job_name
parametre kan bruges med schedule_name
.
Du vil dog ikke være i stand til at bruge schedule_id
hvis en tidsplan er knyttet til flere job.
Bemærk at sp_help_jobschedule
er i msdb database, så den skal køres derfra. Du kan gøre dette enten ved at skifte til msdb database (f.eks. med USE msdb
), eller ved at kvalificere proceduren med databasenavnet og skemaet (dvs. msdb.dbo.sp_help_jobschedule
).
Eksempel
Her er et eksempel for at demonstrere, hvordan du returnerer alle tidsplaner knyttet til et bestemt job:
EXEC sp_help_jobschedule
@job_name = 'SqlAgentTest';
Resultat:
Dette returnerer en liste over tidsplaner, der er knyttet til jobbet angivet med @job_name
argument.
Alternativt kunne jeg have bestået @job_id
:
EXEC sp_help_jobschedule
@job_id = '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';
Men i så fald kunne jeg ikke bruge @job_name
(det er enten det ene eller det andet).
Når du bruger job-id'et, kan du udelade parameternavnet, hvis du ønsker det:
EXEC sp_help_jobschedule '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';
Ved brug af @schedule_id
Parameter
Du kan alternativt få en tidsplan baseret på dens ID:
EXEC sp_help_jobschedule
@schedule_id = 15;
Dette fungerer fint, så længe tidsplanen ikke er knyttet til flere job.
Her er, hvad der sker, når en tidsplan er knyttet til flere job:
EXEC sp_help_jobschedule
@schedule_id = 14;
Resultat:
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.
Og selvom den beder om at specificere job_id
, hvis du gør dette, skal du fjerne schedule_id
(som nævnt, hvis du sender et schedule_id
, kan du ikke inkludere job_name
eller job_id
).
For at demonstrere dette, hvis jeg blot tilføjer job_id
og behold schedule_id
der får jeg følgende fejl.
EXEC sp_help_jobschedule
@job_id = '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8',
@schedule_id = 14;
Resultat:
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.
Inkluder beskrivelsen
En anden ting, du kan gøre, er at angive, om du vil inkludere tidsplanens beskrivelse eller ej.
Som standard er beskrivelsen ikke inkluderet i resultatsættet. Faktisk er schedule_description
kolonne er inkluderet, men den indeholder ikke beskrivelsen, medmindre du udtrykkeligt anmoder om det. Hvis du ikke anmoder om det, skal du bruge schedule_description
kolonnen viser (Description not requested.)
.
@include_description
parameter er bit , med en standard på 0
, hvilket betyder, at den ikke viser beskrivelsen. Sender værdien 1
resulterer i, at beskrivelsen vises.
EXEC sp_help_jobschedule
@job_name = 'SqlAgentTest',
@include_description = 1;