SQL Server Agent-Zeitpläne können unabhängig von Jobs verwaltet werden. Das bedeutet, dass Sie den Zeitplan direkt aktualisieren können, ohne den Job selbst zu aktualisieren.
Sie können dies mit sp_update_schedule
tun gespeicherte Prozedur.
Beispiel
Erstellen Sie den Zeitplan
Lassen Sie uns zuerst einen Zeitplan erstellen:
EXEC sp_add_schedule
@schedule_name = N'Weekly_Sat_1AM',
@freq_type = 8,
@freq_interval = 64,
@freq_recurrence_factor = 1,
@active_start_time = 10000;
Wir können jetzt sp_update_schedule
verwenden um diesen Zeitplan zu ändern.
Aktualisiere den Zeitplan
Hier ist ein Beispiel für die Aktualisierung des gerade erstellten Zeitplans.
EXEC sp_update_schedule
@name = N'Weekly_Sat_1AM',
@new_name = N'Weekly_Sun_4AM',
@freq_type = 8,
@freq_interval = 1,
@freq_recurrence_factor = 1,
@active_start_time = 40000;
In diesem Fall habe ich den Namen des Zeitplans sowie das Häufigkeitsintervall und die Startzeit geändert.
Beachten Sie, dass sp_update_schedule
ändert nur die Einstellungen, für die Parameterwerte bereitgestellt werden. Wird ein Parameter weggelassen, bleibt die aktuelle Einstellung erhalten.
Da einige unserer Einstellungen gleich geblieben sind (insbesondere @freq_type
und @freq_recurrence_factor
), hätten wir diese Parameter auch ganz weglassen können.
So:
EXEC sp_update_schedule
@name = N'Weekly_Sat_1AM',
@new_name = N'Weekly_Sun_4AM',
@freq_interval = 1,
@active_start_time = 40000;
Einen Zeitplan deaktivieren
Sie können @enabled
setzen auf 0
um einen Zeitplan zu deaktivieren.
Beispiel:
EXEC sp_update_schedule
@name = N'Weekly_Sun_4AM',
@new_name = N'Weekly_Sun_4AM (DISABLED)',
@enabled = 0;
In diesem Beispiel habe ich auch den Namen geändert, um deutlich zu machen, dass der Job deaktiviert ist.
Überprüfen Sie den Zeitplan
Sie können sp_help_schedule
verwenden um die aktuellen Einstellungen eines Zeitplans anzuzeigen.
Sie können es mit oder ohne Parameter verwenden. Bei Verwendung ohne Parameter werden alle Zeitpläne zurückgegeben.
EXEC sp_help_schedule;
Wenn Sie nur die Details eines Zeitplans sehen möchten, können Sie den Namen oder die ID des Zeitplans angeben.
So:
EXEC sp_help_schedule
@schedule_name = 'Weekly_Sun_4AM';
Wenn Sie den Namen angeben, müssen Sie sich jedoch an den Nachnamen erinnern, den Sie dem Zeitplan gegeben haben. Wenn wir in unserem Fall diese Prozedur nach dem vorherigen Beispiel ausführen (wenn wir den Zeitplan deaktiviert haben), müssten wir Folgendes tun:
EXEC sp_help_schedule
@schedule_name = 'Weekly_Sun_4AM (DISABLED)';
Die ID des Zeitplans bleibt jedoch konstant, sodass Sie diese unabhängig vom Namen des Zeitplans verwenden können.
Beispiel:
EXEC sp_help_schedule
@schedule_id = 16;
Wenn Sie die ID verwenden, können Sie den Parameternamen weglassen, wenn Sie möchten.
Beispiel:
EXEC sp_help_schedule 16;
Was passiert mit Jobs, die den geänderten Zeitplan verwenden?
Alle Jobs, die den Zeitplan verwenden, verwenden sofort die neuen Einstellungen. Das Ändern eines Zeitplans stoppt jedoch nicht Jobs, die derzeit ausgeführt werden.
Vollständige Syntax
Die vollständige Syntax von sp_update_schedule
geht so:
sp_update_schedule
{ [ @schedule_id = ] schedule_id
| [ @name = ] 'schedule_name' }
[ , [ @new_name = ] new_name ]
[ , [ @enabled = ] enabled ]
[ , [ @freq_type = ] freq_type ]
[ , [ @freq_interval = ] freq_interval ]
[ , [ @freq_subday_type = ] freq_subday_type ]
[ , [ @freq_subday_interval = ] freq_subday_interval ]
[ , [ @freq_relative_interval = ] freq_relative_interval ]
[ , [ @freq_recurrence_factor = ] freq_recurrence_factor ]
[ , [ @active_start_date = ] active_start_date ]
[ , [ @active_end_date = ] active_end_date ]
[ , [ @active_start_time = ] active_start_time ]
[ , [ @active_end_time = ] active_end_time ]
[ , [ @owner_login_name = ] 'owner_login_name' ]
[ , [ @automatic_post =] automatic_post ]
Siehe die Microsoft-Dokumentation für sp_update_schedule
für eine Erklärung jedes Parameters sowie der Werte, die jeder akzeptiert.