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

4 начина да получите списък с графици в SQL Server Agent (T-SQL)

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

Опциите

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

  • Опция 1 :Изпълнете sp_help_job съхранена процедура.
  • Вариант 2 :Изпълнете sp_help_schedule съхранена процедура.
  • Опция 3 :Изпълнете sp_help_jobschedule съхранена процедура.
  • Опция 4 :Запитване за sysschedules таблица (и я присъединете с sysjobschedules и sysjobs_view ).

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

Опция 1:sp_help_job Съхранена процедура

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

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

USE msdb;
EXEC sp_help_job 
	@job_name = 'SqlAgentTest';

Резултат:

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

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

EXEC sp_help_job 
	@job_id = '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';

Когато използвате идентификатора, можете да пропуснете името на параметъра, ако желаете.

Пример:

EXEC sp_help_job '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';

Синтаксис

Пълният синтаксис на 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_schedule Съхранена процедура

sp_help_schedule съхранената процедура е проектирана специално за връщане на графици.

Ако го изпълните без да предавате никакви аргументи, той ще върне всички графици в екземпляра:

EXEC sp_help_schedule;

За да получите информация за конкретен график, предайте или името на графика, или неговия идентификатор:

EXEC sp_help_schedule
	@schedule_name = 'Run_Sat_6AM';

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

@attached_schedules_only параметърът е бит , със стойност по подразбиране 0 , което означава, че връща както прикачени, така и неприкачени графици. Подаване на стойност от 1 го ограничава до само прикачени графици.

Пример:

EXEC sp_help_schedule
	@attached_schedules_only = 1;

Друго нещо, което можете да направите, е да използвате @include_description параметър, за да укажете дали да включите или не описанието на графика в набора от резултати.

Вижте Използване на sp_help_schedule в SQL Server за повече информация и примери.

Опция 3:sp_help_jobschedule Съхранена процедура

sp_help_jobschedule съхранената процедура връща информация за планирането на задания.

Пример:

EXEC sp_help_jobschedule
	@job_name = 'SqlAgentTest';

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

Можете също да подадете идентификатор или име на график, за да върнете само този график.

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

Приетата комбинация от аргументи е малко трудна. Вижте Използване на sp_help_jobschedule в SQL Server за по-подробно обяснение и повече примери.

Опция 4:sysschedules таблица (и други)

Можете да направите заявка за sysschedules таблица и я присъединете с таблици като sysjobschedules и sysjobs_view за да върнете списък със задачи и свързаните с тях графици.

Пример:

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;

Резултат:

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

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ROLLBACK TRUNCATE в SQL Server

  2. Проверете дали даден низ съдържа подниз в SQL Server 2005, като използвате съхранена процедура

  3. Добавете изчислена колона към съществуваща таблица в SQL Server

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

  5. Вземете броя на неуспешните опити за влизане поради грешна парола в SQL Server (T-SQL)