In SQL Server is de sp_help_jobschedule
opgeslagen procedure retourneert informatie over de planning van taken.
Dit artikel geeft een overzicht van deze opgeslagen procedure inclusief voorbeelden.
Syntaxis
De officiële syntaxis gaat als volgt:
sp_help_jobschedule { [ @job_id = ] job_id | [ @job_name = ] 'job_name' }
[ , [ @schedule_name = ] 'schedule_name' ]
[ , [ @schedule_id = ] schedule_id ]
[ , [ @include_description = ] include_description ]
Wanneer u sp_help_jobschedule
. aanroept , moet u de taaknaam of de ID (maar niet beide) of de plannings-ID opgeven. U kunt ook de naam van het rooster doorgeven, maar alleen in combinatie met de taak-ID of de naam ervan.
De geaccepteerde combinatie is een beetje lastig. In principe gaat het als volgt:
Als schedule_id
is opgegeven, noch job_id
noch job_name
kan worden opgegeven. Anders, de job_id
of job_name
parameters kunnen worden gebruikt met schedule_name
.
U kunt de schedule_id
. echter niet gebruiken als een planning aan meerdere taken is gekoppeld.
Merk op dat sp_help_jobschedule
bevindt zich in de msdb database, dus het moet vanaf daar worden uitgevoerd. U kunt dit doen door over te schakelen naar de msdb database (bijv. met USE msdb
), of door de procedure te kwalificeren met de databasenaam en het schema (d.w.z. msdb.dbo.sp_help_jobschedule
).
Voorbeeld
Hier is een voorbeeld om te laten zien hoe u alle schema's die aan een specifieke taak zijn gekoppeld, kunt retourneren:
EXEC sp_help_jobschedule
@job_name = 'SqlAgentTest';
Resultaat:
Dit retourneert een lijst met schema's die zijn gekoppeld aan de taak die is opgegeven met de @job_name
argument.
Als alternatief had ik de @job_id
. kunnen doorgeven :
EXEC sp_help_jobschedule
@job_id = '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';
Maar in dat geval kon ik @job_name
niet gebruiken (het is het een of het ander).
Als u de taak-ID gebruikt, kunt u de parameternaam desgewenst weglaten:
EXEC sp_help_jobschedule '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';
De @schedule_id
. gebruiken Parameter
U kunt ook een schema krijgen op basis van de ID:
EXEC sp_help_jobschedule
@schedule_id = 15;
Dit werkt prima zolang het schema niet aan meerdere taken is gekoppeld.
Dit is wat er gebeurt als een planning aan meerdere taken is gekoppeld:
EXEC sp_help_jobschedule
@schedule_id = 14;
Resultaat:
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.
En hoewel het vraagt om de job_id
, als u dit doet, moet u de schedule_id
. verwijderen (zoals vermeld, als u een schedule_id
doorgeeft , kunt u de job_name
. niet opnemen of job_id
).
Om dit te demonstreren, als ik gewoon de job_id
. toevoeg en bewaar de schedule_id
daar krijg ik de volgende foutmelding.
EXEC sp_help_jobschedule
@job_id = '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8',
@schedule_id = 14;
Resultaat:
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.
Voeg de beschrijving toe
Een ander ding dat u kunt doen, is aangeven of u de beschrijving van het schema wel of niet wilt opnemen.
Standaard wordt de beschrijving niet opgenomen in de resultatenset. Eigenlijk is de schedule_description
kolom is opgenomen, maar bevat niet de beschrijving, tenzij u hier expliciet om vraagt. Als je er niet om vraagt, de schedule_description
kolom toont (Description not requested.)
.
De @include_description
parameter is bit , met een standaard van 0
, wat betekent dat de beschrijving niet wordt weergegeven. Een waarde van 1
doorgeven resulteert in de beschrijving die wordt weergegeven.
EXEC sp_help_jobschedule
@job_name = 'SqlAgentTest',
@include_description = 1;