Vaak is de snelste manier om een lijst met SQL Server Agent-taken te krijgen, eenvoudigweg het SQL Server Agent-knooppunt in de SSMS Object Explorer uit te breiden.
Maar dat is niet de enige manier. En afhankelijk van uw omgeving is het misschien niet eens een optie. Als u geen SSMS of een databasetool hebt waarmee u de SQL Server Agent-taken kunt zien, moet u in plaats daarvan mogelijk T-SQL gebruiken.
In dit artikel presenteer ik drie opties voor het retourneren van een lijst met SQL Server Agent-taken bij gebruik van T-SQL.
De opties
U kunt de volgende opties gebruiken om een lijst met SQL Server Agent-taken met T-SQL te retourneren:
- Optie 1 :Voer de
sp_help_job
uit opgeslagen procedure. - Optie 2 :Vraag de
sysjobs_view
bekijken. - Optie 3 :Query de
sysjobs
tafel direct.
Al deze opties bevinden zich in de msdb database, en moeten daarom in die database worden uitgevoerd. U kunt dat doen door over te schakelen naar de msdb database eerst, of door het object op de juiste manier te kwalificeren (bijv. msdb.dbo.sysjobs_view
).
Optie 1:sp_help_job
Bij gebruik van sp_help_job
om een lijst met SQL Server Agent-taken terug te sturen, voert u deze eenvoudig uit zonder enige argumenten.
Zoals dit:
USE msdb;
EXEC sp_help_job;
In dit geval schakelde ik over naar de msdb database eerst, wat betekende dat ik de procedure niet volledig hoefde te kwalificeren met de databasenaam en het schema.
Zo ziet dat eruit als ik SSMS gebruik om het uit te voeren in mijn testomgeving:
Een specifieke taak retourneren
U kunt dezelfde opgeslagen procedure gebruiken om de details van een van die taken te retourneren. Als je dat doet, krijg je veel meer details dan wanneer je alle vacatures opsomt.
Om de taakdetails te krijgen, moet u de taaknaam of ID opgeven.
Hier is een voorbeeld:
EXEC sp_help_job
@job_name = 'SqlAgentTest';
Resultaat:
Dit geeft een overzicht van de taak, evenals alle taakstappen, schema's en doelservers.
Hier is een voorbeeld van de code bij gebruik van de ID:
EXEC sp_help_job
@job_id = '343D9F2A-070A-4367-BF69-4248FFF57D70';
Als u de ID gebruikt, kunt u desgewenst de parameternaam weglaten.
Voorbeeld:
EXEC sp_help_job '343D9F2A-070A-4367-BF69-4248FFF57D70';
Syntaxis
De volledige syntaxis van sp_help_job
gaat als volgt:
sp_help_job { [ @job_id = ] job_id
[ @job_name = ] 'job_name' }
[ , [ @job_aspect = ] 'job_aspect' ]
[ , [ @job_type = ] 'job_type' ]
[ , [ @owner_login_name = ] 'login_name' ]
[ , [ @subsystem = ] 'subsystem' ]
[ , [ @category_name = ] 'category' ]
[ , [ @enabled = ] enabled ]
[ , [ @execution_status = ] status ]
[ , [ @date_comparator = ] 'date_comparison' ]
[ , [ @date_created = ] date_created ]
[ , [ @date_last_modified = ] date_modified ]
[ , [ @description = ] 'description_pattern' ]
Zie de documentatie van Microsoft voor sp_help_job
voor een uitleg van elke parameter, evenals de waarden die elke parameter accepteert.
Optie 2:De sysjobs_view
Bekijk
U kunt de sysjobs_view
. gebruiken om een lijst met SQL Server Agent-taken te retourneren.
Voorbeeld:
SELECT * FROM msdb.dbo.sysjobs_view;
In dit geval heb ik de weergavenaam gekwalificeerd met de database en het schema.
Deze weergave retourneert een vergelijkbare (maar iets andere) resultaatset voor de sp_help_job
opgeslagen procedure bij gebruik zonder argumenten.
Als u taakdetails zoals stappen, schema's, enz. wilt, moet u deze samenvoegen met andere tabellen, zoals sysjobsteps
, sysjobschedules
, sysjobactivity
, sysjobhistory
, enz.
Hier is een voorbeeld van het samenvoegen met de sysjobsteps
tafel:
SELECT
jv.name,
jv.description,
jv.start_step_id,
js.step_id,
js.step_name
FROM msdb.dbo.sysjobs_view jv
LEFT JOIN msdb.dbo.sysjobsteps js
ON jv.job_id = js.job_id;
Dit is het resultaat in mijn testomgeving:
Aangezien dit een left join is, bevat het jobs die geen stappen hebben (zie de NULL
in de step_id
en step_name
kolommen voor de taak genaamd TestJob
).
Gebruik een inner join om het te beperken tot alleen die taken met stappen.
Optie 3:De sysjobs
Tabel
Hier is een voorbeeld van rechtstreeks naar de sysjobs
gaan tafel:
SELECT * FROM msdb.dbo.sysjobs;
Net als bij de weergave, moet u, als u taakdetails zoals stappen, schema's enz. wilt, deze samenvoegen met andere tabellen, zoals sysjobsteps
, sysjobschedules
, sysjobactivity
, sysjobhistory
, enz.
Het wordt meestal aanbevolen om rechtstreeks naar de weergave te zoeken in plaats van naar de tabel.