sql >> Databáze >  >> RDS >> Sqlserver

4 způsoby, jak získat seznam plánů v SQL Server Agent (T-SQL)

V tomto článku uvádím čtyři možnosti, jak pomocí T-SQL vrátit plány, které jsou připojeny k úloze SQL Server Agent.

Možnosti

Chcete-li vrátit plány úlohy SQL Server Agent, můžete použít následující možnosti T-SQL:

  • Možnost 1 :Spusťte sp_help_job uložené procedury.
  • Možnost 2 :Spusťte sp_help_schedule uložená procedura.
  • Možnost 3 :Spusťte sp_help_jobschedule uložená procedura.
  • Možnost 4 :Dotaz na sysschedules tabulky (a připojte se k ní pomocí sysjobschedules a sysjobs_view ).

Všechny tyto možnosti jsou umístěny v msdb databázi, a proto je třeba ji v této databázi spouštět. Můžete to udělat přepnutím na msdb nejprve databáze, nebo příslušnou kvalifikací objektu (např. msdb.dbo.sysschedules ).

Možnost 1:sp_help_job Uložená procedura

Když zavoláte sp_help_job bez jakýchkoli argumentů jednoduše vrátí seznam úloh. Ale když předáte název nebo ID úlohy, zobrazí se podrobnosti o této úloze, včetně jejích plánů.

Zde je příklad:

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

Výsledek:

Zde je uveden seznam úlohy a také všechny kroky úlohy, plány a cílové servery. V tomto případě jsou k úloze připojeny dva plány.

Zde je příklad kódu při použití ID:

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

Při použití ID můžete název parametru vynechat, chcete-li.

Příklad:

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

Syntaxe

Úplná syntaxe sp_help_job vypadá takto:

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' ]

Viz dokumentaci společnosti Microsoft pro sp_help_job pro vysvětlení každého parametru a také hodnot, které každý přijímá.

Možnost 2:sp_help_schedule Uložená procedura

sp_help_schedule uložená procedura je navržena speciálně pro návrat plánů.

Pokud jej spustíte bez předání jakýchkoli argumentů, vrátí všechny plány v instanci:

EXEC sp_help_schedule;

Chcete-li získat informace pro konkrétní rozvrh, předejte buď název rozvrhu, nebo jeho ID:

EXEC sp_help_schedule
	@schedule_name = 'Run_Sat_6AM';

Ačkoli sp_help_schedule nevrací plány pro konkrétní úlohu, můžete ji použít k vrácení pouze těch plánů, které jsou připojeny k úloze.

@attached_schedules_only parametr je bit , s výchozí hodnotou 0 , což znamená, že vrací připojené i nepřipojené plány. Předání hodnoty 1 omezuje to pouze na připojené plány.

Příklad:

EXEC sp_help_schedule
	@attached_schedules_only = 1;

Další věc, kterou můžete udělat, je použít @include_description parametr určující, zda se má nebo nemá zahrnout popis plánu do sady výsledků.

Viz Používání sp_help_schedule v SQL Server, kde najdete další informace a příklady.

Možnost 3:sp_help_jobschedule Uložená procedura

sp_help_jobschedule uložená procedura vrací informace o plánování úloh.

Příklad:

EXEC sp_help_jobschedule
	@job_name = 'SqlAgentTest';

Tím se vrátí seznam plánů, které jsou připojeny k zadané úloze.

Můžete také předat ID nebo název plánu a vrátit pouze tento plán.

Když zavoláte sp_help_jobschedule , musíte zadat buď název úlohy nebo její ID (ale ne obojí), nebo ID plánu. Můžete také předat schedule_name ale pouze v kombinaci s ID úlohy nebo jejím názvem.

Přijatá kombinace argumentů je trochu ošemetná. Viz Používání sp_help_jobschedule v SQL Server pro podrobnější vysvětlení a další příklady.

Možnost 4:sysschedules tabulka (a další)

Můžete se dotazovat na sysschedules tabulku a spojte ji s tabulkami, jako jsou sysjobschedules a sysjobs_view vrátit seznam úloh a jejich přidružené plány.

Příklad:

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;

Výsledek:

V tomto případě jsem použil vnitřní spojení, abych vrátil pouze plány, které mají přidruženou úlohu a naopak.

Můžete přepnout na pravá spojení a vrátit všechny plány bez ohledu na to, zda jsou připojeny k úloze, nebo na levá spojení vrátit všechny úlohy, bez ohledu na to, zda mají připojený plán. Nebo můžete použít úplné spojení a jednoduše vrátit vše.


  1. Jak získám informace o vlastníkovi indexu a tabulky v Oracle?

  2. Spravujte souběžnost transakcí pomocí zámků na serveru SQL Server

  3. Vrácení čísla týdne ISO z data v SQL Server (T-SQL)

  4. Jak používat alias v klauzuli Where?