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

3 начина да получите стъпките за работа на работа за агент на SQL Server (T-SQL)

В тази статия представям три опции за връщане на стъпките на задача на агент на SQL Server, когато използвате T-SQL.

Опциите

Можете да използвате следните опции на T-SQL, за да върнете стъпките на задача на агент на SQL Server:

  • Опция 1 :Изпълнете sp_help_job съхранена процедура.
  • Вариант 2 :Изпълнете sp_help_jobstep съхранена процедура.
  • Опция 3 :Запитване за sysjobsteps таблица (и я присъединете с sysjobs_view ако е необходимо).

Всички тези опции се намират в msdb база данни и следователно трябва да се изпълнява в тази база данни. Можете да направите това, като преминете към msdb база данни първо или чрез подходящо квалифициране на обекта (напр. msdb.dbo.sysjobsteps ).

Опция 1:sp_help_job

Когато извикате sp_help_job без никакви аргументи, той просто връща списък с работни места. Но когато подадете името или идентификатора на задание, той изброява подробностите за това задание, включително стъпките му.

Ето един пример:

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:sp_help_jobstep

sp_help_jobstep Съхранената процедура е проектирана специално за връщане на стъпките на задание. Но това е всичко, което се връща.

Така че, ако не искате да виждате нещо от графика и целевия сървър и т.н., това може да е това, което търсите.

Можете да предадете sp_help_jobstep името на заданието или неговия идентификатор (но не и двете).

Ето един пример:

EXEC sp_help_jobstep
	@job_name = 'SqlAgentTest';

И ето как изглежда резултатът при работа в две стъпки:

Можете също да посочите идентификатор на стъпка, ако искате да бъде върната само конкретна стъпка. Все пак трябва да посочите за коя работа е (или с неговия идентификационен номер, или с име).

Ето пример за определяне на втората стъпка в заданието:

EXEC sp_help_jobstep
	@job_name = 'SqlAgentTest', 
	@step_id = 2;

Идентификационният номер на стъпката трябва действително да съществува за тази работа. Например, посочване на идентификатор на стъпка от 3 за горното задание води до грешка.

Опция 3:sysjobsteps Таблица

Друга възможност е да изпълните заявка срещу sysjobsteps маса.

Тази таблица съдържа стъпките на всички задания, така че ако искате стъпките само за конкретна работа, ще трябва да подадете идентификатора на заданието.

Ето пример за запитване на sysjobsteps таблица за стъпките на конкретна работа:

SELECT * FROM msdb.dbo.sysjobsteps
WHERE job_id = '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';

Това връща подобен резултат към sp_help_jobstep процедура.

Ако искате някои от детайлите на заданието да бъдат върнати (като името му), можете да изпълните обединяване между sysjobsteps и sysjobs_view .

Пример:

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 ).

За да го ограничите само до тези задачи със стъпки, използвайте вътрешно присъединяване.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Напишете число с две десетични знака SQL Server

  2. Какъв е най-добрият начин за съхраняване на координати (дължина/ширина, от Google Maps) в SQL Server?

  3. Препоръчителни процесори Intel за натоварвания на SQL Server 2014

  4. Добавяне на намек за заявка при извикване на функция с таблична стойност

  5. Свържете се със SQL Server чрез PDO с помощта на драйвер на SQL Server