Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Verwenden von sp_help_jobschedule in SQL Server

In SQL Server der sp_help_jobschedule gespeicherte Prozedur gibt Informationen über die Planung von Jobs zurück.

Dieser Artikel bietet einen Überblick über diese gespeicherte Prozedur, einschließlich Beispielen.

Syntax

Die offizielle Syntax lautet wie folgt:

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

Wenn Sie sp_help_jobschedule aufrufen , müssen Sie entweder den Jobnamen oder seine ID (aber nicht beides) oder die Zeitplan-ID angeben. Sie können auch den Namen des Zeitplans übergeben, aber nur in Kombination mit der Job-ID oder seinem Namen.

Die akzeptierte Kombination ist etwas knifflig. Im Grunde geht das so:

Wenn schedule_id angegeben ist, weder job_id noch job_name kann angegeben werden. Andernfalls die job_id oder job_name Parameter können mit schedule_name verwendet werden .

Sie können jedoch nicht die schedule_id verwenden wenn ein Zeitplan mehreren Jobs zugeordnet ist.

Beachten Sie, dass sp_help_jobschedule befindet sich in der msdb Datenbank, also muss es von dort ausgeführt werden. Sie können dies entweder tun, indem Sie in die msdb wechseln Datenbank (z.B. mit USE msdb ) oder indem Sie die Prozedur mit dem Datenbanknamen und Schema qualifizieren (z. B. msdb.dbo.sp_help_jobschedule ).

Beispiel

Hier ist ein Beispiel, das zeigt, wie alle Zeitpläne zurückgegeben werden, die einem bestimmten Job zugeordnet sind:

EXEC sp_help_jobschedule
	@job_name = 'SqlAgentTest';

Ergebnis:

Dies gibt eine Liste von Zeitplänen zurück, die an den mit @job_name angegebenen Job angehängt sind Argument.

Alternativ hätte ich auch den @job_id übergeben können :

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

Aber in diesem Fall konnte ich @job_name nicht verwenden (entweder das eine oder das andere).

Wenn Sie die Job-ID verwenden, können Sie den Parameternamen weglassen, wenn Sie möchten:

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

Verwendung von @schedule_id Parameter

Alternativ können Sie einen Zeitplan basierend auf seiner ID abrufen:

EXEC sp_help_jobschedule
	@schedule_id = 15;

Dies funktioniert gut, solange der Zeitplan nicht an mehrere Jobs angehängt ist.

Folgendes passiert, wenn ein Zeitplan mehreren Jobs zugeordnet ist:

EXEC sp_help_jobschedule
	@schedule_id = 14;

Ergebnis:

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.

Und obwohl es darum bittet, die job_id anzugeben , müssen Sie in diesem Fall die schedule_id entfernen (wie erwähnt, wenn Sie eine schedule_id übergeben , können Sie den job_name nicht einschließen oder job_id ).

Um dies zu demonstrieren, füge ich einfach die job_id hinzu und behalten Sie die schedule_id bei dort erhalte ich die folgende Fehlermeldung.

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

Ergebnis:

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.

Beschreibung hinzufügen

Sie können auch angeben, ob die Beschreibung des Zeitplans enthalten sein soll oder nicht.

Standardmäßig ist die Beschreibung nicht in der Ergebnismenge enthalten. Eigentlich die schedule_description Spalte ist enthalten, enthält jedoch nicht die Beschreibung, es sei denn, Sie fordern dies ausdrücklich an. Wenn Sie es nicht anfordern, die schedule_description Spalte zeigt (Description not requested.) an .

Der @include_description Parameter ist bit , mit einem Standardwert von 0 , was bedeutet, dass die Beschreibung nicht angezeigt wird. Übergeben eines Werts von 1 bewirkt, dass die Beschreibung angezeigt wird.

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