In dit artikel presenteer ik vier opties voor het gebruik van T-SQL om de schema's te retourneren die aan een SQL Server Agent-taak zijn gekoppeld.
De opties
U kunt de volgende T-SQL-opties gebruiken om de schema's van een SQL Server Agent-taak te retourneren:
- Optie 1 :Voer de
sp_help_job
uit opgeslagen procedure. - Optie 2 :Voer de
sp_help_schedule
uit opgeslagen procedure. - Optie 3 :Voer het
sp_help_jobschedule
uit opgeslagen procedure. - Optie 4 :Query de
sysschedules
tabel (en voeg deze samen metsysjobschedules
ensysjobs_view
).
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.sysschedules
).
Optie 1:De sp_help_job
Opgeslagen procedure
Wanneer u sp_help_job
. belt zonder argumenten retourneert het eenvoudig een lijst met taken. Maar wanneer u de naam of ID van een taak doorgeeft, worden de details voor die taak weergegeven, inclusief de planningen.
Hier is een voorbeeld:
USE msdb;
EXEC sp_help_job
@job_name = 'SqlAgentTest';
Resultaat:
Dit geeft een overzicht van de taak, evenals alle taakstappen, schema's en doelservers. In dit geval zijn er twee schema's aan de taak gekoppeld.
Hier is een voorbeeld van de code bij gebruik van de ID:
EXEC sp_help_job
@job_id = '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';
Als u de ID gebruikt, kunt u desgewenst de parameternaam weglaten.
Voorbeeld:
EXEC sp_help_job '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';
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 sp_help_schedule
Opgeslagen procedure
De sp_help_schedule
opgeslagen procedure is speciaal ontworpen om schema's te retourneren.
Als je het uitvoert zonder argumenten door te geven, zal het alle schema's in de instantie retourneren:
EXEC sp_help_schedule;
Om informatie voor een specifiek schema te krijgen, geef je de naam of het ID van het schema door:
EXEC sp_help_schedule
@schedule_name = 'Run_Sat_6AM';
Hoewel sp_help_schedule
retourneert geen schema's voor een specifieke taak, u kunt het gebruiken om alleen die schema's te retourneren die aan een taak zijn gekoppeld.
De @attached_schedules_only
parameter is bit , met een standaardwaarde van 0
, wat betekent dat het zowel gekoppelde als niet-bijgevoegde schema's retourneert. Een waarde van 1
doorgeven beperkt het tot alleen bijgevoegde schema's.
Voorbeeld:
EXEC sp_help_schedule
@attached_schedules_only = 1;
Een ander ding dat u kunt doen, is de @include_description
. gebruiken parameter om aan te geven of de beschrijving van het schema al dan niet moet worden opgenomen in de resultatenset.
Zie sp_help_schedule
gebruiken in SQL Server voor meer informatie en voorbeelden.
Optie 3:Het sp_help_jobschedule
Opgeslagen procedure
Het sp_help_jobschedule
opgeslagen procedure retourneert informatie over de planning van taken.
Voorbeeld:
EXEC sp_help_jobschedule
@job_name = 'SqlAgentTest';
Dit retourneert een lijst met schema's die aan de opgegeven taak zijn gekoppeld.
Je kunt ook de ID of naam van een schema doorgeven om alleen dat schema terug te geven.
Wanneer u sp_help_jobschedule
. aanroept , moet u de taaknaam of de ID (maar niet beide) of de plannings-ID opgeven. Je kunt ook de schedule_name
. doorgeven maar alleen in combinatie met de taak-ID of de naam ervan.
De geaccepteerde combinatie van argumenten is een beetje lastig. Zie sp_help_jobschedule
gebruiken in SQL Server voor een meer gedetailleerde uitleg en meer voorbeelden.
Optie 4:De sysschedules
tafel (en anderen)
U kunt de sysschedules
. opvragen table en voeg het samen met tabellen zoals sysjobschedules
en sysjobs_view
om een lijst met taken en de bijbehorende schema's terug te sturen.
Voorbeeld:
SELECT
jv.name,
jv.description,
s.schedule_id,
s.name,
s.freq_type,
s.freq_interval,
s.freq_subday_type,
s.freq_subday_interval,
js.next_run_date,
js.next_run_time
FROM msdb.dbo.sysjobs_view jv
INNER JOIN msdb.dbo.sysjobschedules js
ON jv.job_id = js.job_id
INNER JOIN msdb.dbo.sysschedules s
ON s.schedule_id = js.schedule_id
ORDER BY jv.name, s.name;
Resultaat:
In dit geval heb ik inner joins gebruikt om alleen schema's te retourneren die een bijbehorende taak hebben en vice versa.
U kunt overschakelen naar rechtse joins om alle schema's te retourneren, ongeacht of ze aan een taak zijn gekoppeld, of linkse joins om alle taken te retourneren, ongeacht of ze een bijgevoegd schema hebben. Of je kunt volledige joins gebruiken om alles terug te sturen.