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

Pomocí sp_help_jobschedule v SQL Server

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

Tento článek poskytuje přehled této uložené procedury včetně příkladů.

Syntaxe

Oficiální syntaxe vypadá takto:

sp_help_jobschedule { [ @job_id = ] job_id | [ @job_name = ] 'job_name' }  
     [ , [ @schedule_name = ] 'schedule_name' ]  
     [ , [ @schedule_id = ] schedule_id ]  
     [ , [ @include_description = ] include_description ]

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 název plánu, ale pouze v kombinaci s ID úlohy nebo jejím názvem.

Přijatá kombinace je trochu ošidná. V zásadě to vypadá takto:

Pokud schedule_id není zadáno ani job_id ani job_name lze specifikovat. Jinak job_id nebo job_name parametry lze použít s schedule_name .

Nebudete však moci použít schedule_id pokud je plán připojen k více úlohám.

Všimněte si, že sp_help_jobschedule je v msdb databázi, takže je třeba ji spouštět odtud. Můžete to provést buď přepnutím do msdb databáze (např. pomocí USE msdb ), nebo kvalifikací postupu s názvem databáze a schématem (tj. msdb.dbo.sp_help_jobschedule ).

Příklad

Zde je příklad, který ukazuje, jak vrátit všechny plány připojené ke konkrétní úloze:

EXEC sp_help_jobschedule
	@job_name = 'SqlAgentTest';

Výsledek:

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

Případně jsem mohl předat @job_id :

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

Ale v tom případě jsem nemohl použít @job_name (je buď jedno, nebo druhé).

Při použití ID úlohy můžete vynechat název parametru, pokud si přejete:

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

Pomocí @schedule_id Parametr

Alternativně můžete získat plán na základě jeho ID:

EXEC sp_help_jobschedule
	@schedule_id = 15;

Funguje to dobře, pokud plán není připojen k více úlohám.

Co se stane, když je plán připojen k více úlohám:

EXEC sp_help_jobschedule
	@schedule_id = 14;

Výsledek:

Msg 14369, Level 16, State 1, Procedure sp_help_jobschedule, Line 69 [Batch Start Line 22]
 The schedule ID "14" is used by more than one job. Specify the job_id.

A to i přesto, že požaduje zadání job_id , pokud to uděláte, budete muset odstranit schedule_id (jak bylo zmíněno, pokud předáte schedule_id , nemůžete uvést job_name nebo job_id ).

Abych to demonstroval, když jednoduše přidám job_id a ponechte schedule_id tam se mi zobrazí následující chyba.

EXEC sp_help_jobschedule
	@job_id = '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8',
	@schedule_id = 14;

Výsledek:

Msg 14273, Level 16, State 1, Procedure sp_help_jobschedule, Line 51 [Batch Start Line 22]
 You must provide either @job_id or @job_name (and, optionally, @schedule_name), or @schedule_id.

Zahrňte popis

Další věc, kterou můžete udělat, je určit, zda chcete zahrnout popis plánu.

Ve výchozím nastavení není popis součástí sady výsledků. Vlastně schedule_description sloupec je zahrnuto, ale neobsahuje popis, pokud si to výslovně nevyžádáte. Pokud si to nevyžádáte, schedule_description sloupec zobrazuje (Description not requested.) .

@include_description parametr je bit , s výchozí hodnotou 0 , což znamená, že nezobrazuje popis. Předání hodnoty 1 způsobí zobrazení popisu.

EXEC sp_help_jobschedule
	@job_name = 'SqlAgentTest',
	@include_description = 1;


  1. Jak vytvářet a manipulovat s databázemi SQL pomocí Pythonu

  2. Chyba připojení Java Oracle localhost (ORA-12505)

  3. Postgres:definovat výchozí hodnotu pro selhání CAST?

  4. Řešení konfliktů primárního klíče při vkládání dat do SQLite