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;