Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

3 начина за връщане на списък със задачи за агент на SQL Server (T-SQL)

Често най-бързият начин да получите списък със задачи на 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 и др.

Обикновено се препоръчва да се прави заявка за изгледа, а не за таблицата директно.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Съхранена процедура - връщане на идентичност като изходен параметър или скалар

  2. Как да изброите всички дати между две дати

  3. Как да ИЗБЕРЕТЕ ОТ съхранената процедура

  4. Как да върнете само датата от тип данни на SQL Server DateTime

  5. Как мога да сортирам обикновено колона „Номер на версията“ с помощта на заявка на SQL Server