I SQL Server, sp_help_jobschedule
lagrad procedur returnerar information om schemaläggning av jobb.
Den här artikeln ger en översikt över denna lagrade procedur inklusive exempel.
Syntax
Den officiella syntaxen ser ut så här:
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 sp_help_jobschedule
måste du ange antingen jobbnamnet eller dess ID (men inte båda), eller schema-ID. Du kan också skicka schemats namn men endast i kombination med jobb-ID eller dess namn.
Den accepterade kombinationen är lite knepig. I grund och botten går det så här:
Om schedule_id
anges, varken job_id
inte heller job_name
kan specificeras. Annars, job_id
eller job_name
parametrar kan användas med schedule_name
.
Du kommer dock inte att kunna använda schedule_id
om ett schema är kopplat till flera jobb.
Observera att sp_help_jobschedule
finns i msdb databas, så den måste köras därifrån. Du kan göra detta antingen genom att byta till msdb databas (t.ex. med USE msdb
), eller genom att kvalificera proceduren med databasens namn och schema (dvs. msdb.dbo.sp_help_jobschedule
).
Exempel
Här är ett exempel för att visa hur man returnerar alla scheman som är kopplade till ett specifikt jobb:
EXEC sp_help_jobschedule
@job_name = 'SqlAgentTest';
Resultat:
Detta returnerar en lista över scheman som är kopplade till jobbet som anges med @job_name
argument.
Alternativt kunde jag ha klarat @job_id
:
EXEC sp_help_jobschedule
@job_id = '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';
Men i så fall kunde jag inte använda @job_name
(det är antingen det ena eller det andra).
När du använder jobb-ID kan du utelämna parameternamnet om du vill:
EXEC sp_help_jobschedule '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';
Med @schedule_id
Parameter
Du kan alternativt få ett schema baserat på dess ID:
EXEC sp_help_jobschedule
@schedule_id = 15;
Detta fungerar bra så länge schemat inte är kopplat till flera jobb.
Så här händer när ett schema är kopplat till flera jobb:
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.
Och även om den ber om att specificera job_id
, om du gör detta måste du ta bort schedule_id
(som nämnts, om du skickar ett schedule_id
, du kan inte inkludera job_name
eller job_id
).
För att visa detta, om jag bara lägger till job_id
och behåll schedule_id
där får jag följande fel.
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.
Inkludera beskrivningen
En annan sak du kan göra är att ange om schemats beskrivning ska inkluderas eller inte.
Som standard ingår inte beskrivningen i resultatuppsättningen. Faktiskt, schedule_description
kolumn är ingår, men den innehåller inte beskrivningen, såvida du inte uttryckligen begär det. Om du inte begär det, schedule_description
kolumnen visar (Description not requested.)
.
@include_description
parametern är bit , med standardvärdet 0
, vilket betyder att den inte visar beskrivningen. Skickar värdet 1
resulterar i att beskrivningen visas.
EXEC sp_help_jobschedule
@job_name = 'SqlAgentTest',
@include_description = 1;