sql >> Database teknologi >  >> RDS >> Sqlserver

Brug af sp_help_jobschedule i SQL Server

I SQL Server er sp_help_jobschedule lagret procedure returnerer information om planlægning af job.

Denne artikel giver et overblik over denne lagrede procedure inklusive eksempler.

Syntaks

Den officielle syntaks lyder sådan her:

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

Når du ringer til sp_help_jobschedule , skal du angive enten jobnavnet eller dets id (men ikke begge dele) eller tidsplan-id'et. Du kan også videregive tidsplanens navn, men kun i kombination med job-id'et eller dets navn.

Den accepterede kombination er lidt tricky. Grundlæggende går det sådan her:

Hvis schedule_id er angivet, hverken job_id heller ikke job_name kan specificeres. Ellers job_id eller job_name parametre kan bruges med schedule_name .

Du vil dog ikke være i stand til at bruge schedule_id hvis en tidsplan er knyttet til flere job.

Bemærk at sp_help_jobschedule er i msdb database, så den skal køres derfra. Du kan gøre dette enten ved at skifte til msdb database (f.eks. med USE msdb ), eller ved at kvalificere proceduren med databasenavnet og skemaet (dvs. msdb.dbo.sp_help_jobschedule ).

Eksempel

Her er et eksempel for at demonstrere, hvordan du returnerer alle tidsplaner knyttet til et bestemt job:

EXEC sp_help_jobschedule
	@job_name = 'SqlAgentTest';

Resultat:

Dette returnerer en liste over tidsplaner, der er knyttet til jobbet angivet med @job_name argument.

Alternativt kunne jeg have bestået @job_id :

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

Men i så fald kunne jeg ikke bruge @job_name (det er enten det ene eller det andet).

Når du bruger job-id'et, kan du udelade parameternavnet, hvis du ønsker det:

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

Ved brug af @schedule_id Parameter

Du kan alternativt få en tidsplan baseret på dens ID:

EXEC sp_help_jobschedule
	@schedule_id = 15;

Dette fungerer fint, så længe tidsplanen ikke er knyttet til flere job.

Her er, hvad der sker, når en tidsplan er knyttet til flere job:

EXEC sp_help_jobschedule
	@schedule_id = 14;

Resultat:

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.

Og selvom den beder om at specificere job_id , hvis du gør dette, skal du fjerne schedule_id (som nævnt, hvis du sender et schedule_id , kan du ikke inkludere job_name eller job_id ).

For at demonstrere dette, hvis jeg blot tilføjer job_id og behold schedule_id der får jeg følgende fejl.

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

Resultat:

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.

Inkluder beskrivelsen

En anden ting, du kan gøre, er at angive, om du vil inkludere tidsplanens beskrivelse eller ej.

Som standard er beskrivelsen ikke inkluderet i resultatsættet. Faktisk er schedule_description kolonne er inkluderet, men den indeholder ikke beskrivelsen, medmindre du udtrykkeligt anmoder om det. Hvis du ikke anmoder om det, skal du bruge schedule_description kolonnen viser (Description not requested.) .

@include_description parameter er bit , med en standard på 0 , hvilket betyder, at den ikke viser beskrivelsen. Sender værdien 1 resulterer i, at beskrivelsen vises.

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


  1. Problemer under import af en txt-fil til postgres ved hjælp af php

  2. ScyllaDB-trends – Sådan implementerer brugere The Real-Time Big Data-database

  3. Konverter MySQL-skema til Github Wiki?

  4. SQL Server Ydeevne TOP CPU Query -2