Често най-бързият начин да получите списък със задачи на SQL Server Agent е просто да разширите възела на SQL Server Agent в SSMS Object Explorer.
Но това не е единственият начин. И в зависимост от вашата среда, това може дори да не е опция. Ако нямате SSMS или инструмент за база данни, който ви позволява да видите заданията на SQL Server Agent, може да се наложи да използвате вместо това T-SQL.
В тази статия представям три опции за връщане на списък със задачи на SQL Server Agent при използване на T-SQL.
Опциите
Можете да използвате следните опции, за да върнете списък със задачи на агент на SQL Server с T-SQL:
- Опция 1 :Изпълнете
sp_help_job
съхранена процедура. - Вариант 2 :Заявете за
sysjobs_view
преглед. - Опция 3 :Запитване за
sysjobs
маса директно.
Всички тези опции се намират в msdb база данни и следователно трябва да се изпълнява в тази база данни. Можете да направите това, като преминете към msdb база данни първо или чрез подходящо квалифициране на обекта (напр. msdb.dbo.sysjobs_view
).
Опция 1:sp_help_job
Когато използвате sp_help_job
за да върнете списък със задачи на агент на SQL Server, просто го изпълнете без никакви аргументи.
Като това:
USE msdb;
EXEC sp_help_job;
В този случай преминах към msdb база данни първо, което означаваше, че не е необходимо да квалифицирам напълно процедурата с името на базата данни и схемата.
Ето как изглежда това, когато използвам SSMS, за да го изпълня в моята тестова среда:
Връщане на конкретна работа
Можете да използвате същата съхранена процедура, за да върнете подробностите за която и да е от тези задачи. Когато направите това, получавате много повече подробности, отколкото получавате, когато изброявате всички работни места.
За да получите подробности за работата, трябва да предоставите името или идентификатора на заданието.
Ето един пример:
EXEC sp_help_job
@job_name = 'SqlAgentTest';
Резултат:
Това изброява заданието, както и всички стъпки, графици и целеви сървъри.
Ето пример за кода при използване на идентификатора:
EXEC sp_help_job
@job_id = '343D9F2A-070A-4367-BF69-4248FFF57D70';
Когато използвате идентификатора, можете да пропуснете името на параметъра, ако желаете.
Пример:
EXEC sp_help_job '343D9F2A-070A-4367-BF69-4248FFF57D70';
Синтаксис
Пълният синтаксис на sp_help_job
става така:
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' ]
Вижте документацията на Microsoft за sp_help_job
за обяснение на всеки параметър, както и стойностите, които всеки приема.
Опция 2:sysjobs_view
Преглед
Можете да използвате sysjobs_view
за да върнете списък със задачи на агент на SQL Server.
Пример:
SELECT * FROM msdb.dbo.sysjobs_view;
В този случай определих името на изгледа с базата данни и схемата.
Този изглед връща подобен (но малко по-различен) набор от резултати към sp_help_job
съхранена процедура, когато се използва без никакви аргументи.
Ако искате подробности за работата като стъпки, графици и т.н., ще трябва да я присъедините с други таблици, като sysjobsteps
, sysjobschedules
, sysjobactivity
, sysjobhistory
и др.
Ето пример за присъединяването му с sysjobsteps
таблица:
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;
Ето резултата в моята тестова среда:
Тъй като това е ляво присъединяване, то включва задачи, които нямат никакви стъпки (вижте NULL
в step_id
и step_name
колони за заданието, наречено TestJob
).
За да го ограничите само до тези задачи със стъпки, използвайте вътрешно присъединяване.
Опция 3:sysjobs
Таблица
Ето пример за директно преминаване към sysjobs
таблица:
SELECT * FROM msdb.dbo.sysjobs;
Както при изгледа, ако искате подробности за заданието като стъпки, графици и т.н., ще трябва да го присъедините с други таблици, като sysjobsteps
, sysjobschedules
, sysjobactivity
, sysjobhistory
и др.
Обикновено се препоръчва да се прави заявка за изгледа, а не за таблицата директно.