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

3 způsoby, jak vrátit seznam úloh SQL Server Agent (T-SQL)

Často nejrychlejším způsobem, jak získat seznam úloh SQL Server Agent, je jednoduše rozbalit uzel SQL Server Agent v Průzkumníku objektů SSMS.

Ale to není jediný způsob. A v závislosti na vašem prostředí to možná ani nebude možné. Pokud nemáte SSMS nebo databázový nástroj, který vám umožní zobrazit úlohy SQL Server Agent, možná budete muset místo toho použít T-SQL.

V tomto článku uvádím tři možnosti, jak vrátit seznam úloh SQL Server Agent při použití T-SQL.

Možnosti

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

  • Možnost 1 :Spusťte sp_help_job uložené procedury.
  • Možnost 2 :Dotaz na sysjobs_view zobrazit.
  • Možnost 3 :Dotaz na sysjobs stůl přímo.

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

Možnost 1:sp_help_job

Při použití sp_help_job Chcete-li vrátit seznam úloh SQL Server Agent, jednoduše jej spusťte bez jakýchkoli argumentů.

Takhle:

USE msdb;
EXEC sp_help_job;

V tomto případě jsem přešel na msdb databáze jako první, což znamenalo, že jsem nemusel plně kvalifikovat postup s názvem databáze a schématem.

Zde je to, jak to vypadá, když používám SSMS k jeho spuštění v mém testovacím prostředí:

Vrácení konkrétní úlohy

K vrácení podrobností o kterékoli z těchto úloh můžete použít stejnou uloženou proceduru. Když to uděláte, získáte mnohem více podrobností, než když vypíšete všechny zakázky.

Chcete-li získat podrobnosti úlohy, musíte zadat název nebo ID úlohy.

Zde je příklad:

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.

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

EXEC sp_help_job 
	@job_id = '343D9F2A-070A-4367-BF69-4248FFF57D70';

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

Příklad:

EXEC sp_help_job '343D9F2A-070A-4367-BF69-4248FFF57D70';

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:sysjobs_view Zobrazit

Můžete použít sysjobs_view vrátit seznam úloh SQL Server Agent.

Příklad:

SELECT * FROM msdb.dbo.sysjobs_view;

V tomto případě jsem název pohledu kvalifikoval s databází a schématem.

Toto zobrazení vrací podobnou (ale mírně odlišnou) sadu výsledků jako sp_help_job uložená procedura při použití bez jakýchkoli argumentů.

Pokud chcete podrobnosti o úkolu, jako jsou kroky, plány atd., budete je muset spojit s jinými tabulkami, jako jsou sysjobsteps , sysjobschedules , sysjobactivity , sysjobhistory , atd.

Zde je příklad spojení s sysjobsteps tabulka:

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;

Zde je výsledek v mém testovacím prostředí:

Jelikož se jedná o levé spojení, zahrnuje úlohy, které nemají žádné kroky (viz NULL v step_id a step_name sloupce pro úlohu s názvem TestJob ).

Chcete-li jej omezit pouze na úlohy s kroky, použijte vnitřní spojení.

Možnost 3:sysjobs Tabulka

Zde je příklad přechodu přímo do sysjobs tabulka:

SELECT * FROM msdb.dbo.sysjobs;

Stejně jako v případě zobrazení, pokud chcete podrobnosti o úkolu, jako jsou kroky, plány atd., budete jej muset propojit s jinými tabulkami, například sysjobsteps , sysjobschedules , sysjobactivity , sysjobhistory , atd.

Obvykle se doporučuje dotazovat se spíše na pohled než přímo na tabulku.


  1. Použití zpětných značek kolem názvů polí

  2. oracle systimestamp (sysdate) na milisekundy

  3. Postgres:Jak převést řetězec json na text?

  4. Porovnejte data v T-SQL, ignorujte časovou část