sql >> Databasteknik >  >> RDS >> Sqlserver

Använder sp_help_jobschedule i SQL Server

I SQL Server, sp_help_jobschedule lagrad procedur returnerar information om schemaläggning av jobb.

Den här artikeln ger en översikt över denna lagrade procedur inklusive exempel.

Syntax

Den officiella syntaxen ser ut så här:

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 sp_help_jobschedule måste du ange antingen jobbnamnet eller dess ID (men inte båda), eller schema-ID. Du kan också skicka schemats namn men endast i kombination med jobb-ID eller dess namn.

Den accepterade kombinationen är lite knepig. I grund och botten går det så här:

Om schedule_id anges, varken job_id inte heller job_name kan specificeras. Annars, job_id eller job_name parametrar kan användas med schedule_name .

Du kommer dock inte att kunna använda schedule_id om ett schema är kopplat till flera jobb.

Observera att sp_help_jobschedule finns i msdb databas, så den måste köras därifrån. Du kan göra detta antingen genom att byta till msdb databas (t.ex. med USE msdb ), eller genom att kvalificera proceduren med databasens namn och schema (dvs. msdb.dbo.sp_help_jobschedule ).

Exempel

Här är ett exempel för att visa hur man returnerar alla scheman som är kopplade till ett specifikt jobb:

EXEC sp_help_jobschedule
	@job_name = 'SqlAgentTest';

Resultat:

Detta returnerar en lista över scheman som är kopplade till jobbet som anges med @job_name argument.

Alternativt kunde jag ha klarat @job_id :

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

Men i så fall kunde jag inte använda @job_name (det är antingen det ena eller det andra).

När du använder jobb-ID kan du utelämna parameternamnet om du vill:

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

Med @schedule_id Parameter

Du kan alternativt få ett schema baserat på dess ID:

EXEC sp_help_jobschedule
	@schedule_id = 15;

Detta fungerar bra så länge schemat inte är kopplat till flera jobb.

Så här händer när ett schema är kopplat till flera jobb:

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.

Och även om den ber om att specificera job_id , om du gör detta måste du ta bort schedule_id (som nämnts, om du skickar ett schedule_id , du kan inte inkludera job_name eller job_id ).

För att visa detta, om jag bara lägger till job_id och behåll schedule_id där får jag följande fel.

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.

Inkludera beskrivningen

En annan sak du kan göra är att ange om schemats beskrivning ska inkluderas eller inte.

Som standard ingår inte beskrivningen i resultatuppsättningen. Faktiskt, schedule_description kolumn är ingår, men den innehåller inte beskrivningen, såvida du inte uttryckligen begär det. Om du inte begär det, schedule_description kolumnen visar (Description not requested.) .

@include_description parametern är bit , med standardvärdet 0 , vilket betyder att den inte visar beskrivningen. Skickar värdet 1 resulterar i att beskrivningen visas.

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


  1. Använda Oracle JDeveloper 12c med Oracle Database, del 1

  2. Flera räkningar med olika villkor i en enda MySQL-fråga

  3. Använd SERVERPROPERTY() för att få serverinformation i SQL Server

  4. paginering i listvy