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