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

Ändern eines SQL Server-Agent-Zeitplans (T-SQL)

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.