In SQL Server können Sie den sp_update_jobstep
verwenden gespeicherte Prozedur zum Ändern eines vorhandenen Auftragsschritts eines SQL Server-Agent-Auftrags.
Wenn Sie einen SQL Server-Agent-Auftrag erstellen, erstellen Sie einen oder mehrere Auftragsschritte für diesen Auftrag. Der sp_update_jobstep
Das Verfahren ermöglicht es Ihnen, einen bestimmten Jobschritt unabhängig vom eigentlichen Job oder anderen Jobschritten zu aktualisieren.
Beispiel
In diesem Beispiel erstellen wir einen Job mit einem Jobschritt, dann verwenden wir sp_update_jobstep
um den Jobschritt zu ändern.
Job erstellen
Erstellen Sie zuerst den Job:
USE msdb;
GO
EXEC sp_add_job
@job_name = N'BackupMoviesDB',
@description = N'Backup the Movies database.',
@category_name = 'Database Maintenance';
GO
EXEC sp_add_jobstep
@job_name = N'BackupMoviesDB',
@step_name = N'Run the backup',
@subsystem = N'TSQL',
@command = N'BACKUP DATABASE [Movies] TO DISK = N''C:\Backups\Movies.bak'' WITH CHECKSUM',
@retry_attempts = 5,
@retry_interval = 5;
GO
EXEC sp_add_schedule
@schedule_name = N'Run_Sat_5AM',
@freq_type = 8,
@freq_interval = 64,
@freq_recurrence_factor = 1,
@active_start_time = 050000;
GO
EXEC sp_attach_schedule
@job_name = N'BackupMoviesDB',
@schedule_name = N'Run_Sat_5AM';
GO
EXEC sp_add_jobserver
@job_name = N'BackupMoviesDB';
GO
Der obige Code verwendet fünf gespeicherte Prozeduren, aber den sp_add_jobstep
Die Prozedur ist die einzige, die die Details enthält, die mit sp_update_jobstep
geändert werden können . Die anderen Prozeduren haben ihre eigenen passenden „Update“-Prozeduren (wie sp_update_job
und sp_update_schedule
).
Nur um das klarzustellen, der folgende Teil ist der Teil, den wir mit dem sp_update_jobstep
aktualisieren können Verfahren.
EXEC sp_add_jobstep
@job_name = N'BackupMoviesDB',
@step_name = N'Run the backup',
@subsystem = N'TSQL',
@command = N'BACKUP DATABASE [Movies] TO DISK = N''C:\Backups\Movies.bak'' WITH CHECKSUM',
@retry_attempts = 5,
@retry_interval = 5;
In diesem Fall haben wir beim Erstellen des Jobs sechs Argumente angegeben. Das Verfahren akzeptiert eigentlich viel mehr als das, aber das reicht für unsere Zwecke.
Job-Step aktualisieren
Wir können jetzt sp_update_jobstep
verwenden um den obigen Jobschritt zu ändern.
EXEC sp_update_jobstep
@job_name = N'BackupMoviesDB',
@step_id = 1,
@step_name = N'Run the backup',
@subsystem = N'TSQL',
@command = N'BACKUP DATABASE [Movies] TO DISK = N''C:\Backups\Movies.bak'' WITH CHECKSUM',
@retry_attempts = 10,
@retry_interval = 5;
Das einzige, was dieses Beispiel bewirkt, ist die Erhöhung der Wiederholungsversuche von 5
bis 10
.
Der sp_update_jobstep
Die gespeicherte Prozedur ändert nur die Einstellungen, für die Parameterwerte bereitgestellt werden. Wird ein Parameter weggelassen, bleibt die aktuelle Einstellung erhalten.
Daher hätten wir in diesem Fall die anderen Argumente wie folgt weglassen können:
EXEC sp_update_jobstep
@job_name = N'BackupMoviesDB',
@step_id = 1,
@retry_attempts = 10;
Auftrag prüfen
Sie können sp_help_job
verwenden um Informationen über die SQL Server Agent-Jobs im System zu erhalten.
Sie können es mit oder ohne Parameter verwenden, aber um die Jobschrittdetails zu erhalten, müssen Sie den Jobnamen oder die ID angeben.
So:
EXEC sp_help_job
@job_name = 'BackupMoviesDB';
So sieht das Ergebnis aus, wenn es in SSMS ausgeführt wird:
Hier ist ein Beispiel für den Code bei Verwendung der ID:
EXEC sp_help_job
@job_id = '158D714B-6686-48FD-BB41-D35C6EE70AED';
Wenn Sie die ID verwenden, können Sie den Parameternamen weglassen, wenn Sie möchten.
Beispiel:
EXEC sp_help_job '158D714B-6686-48FD-BB41-D35C6EE70AED';
Vollständige Syntax
Die vollständige Syntax von sp_update_jobstep
geht so:
sp_update_jobstep
{ [@job_id =] job_id
| [@job_name =] 'job_name' } ,
[@step_id =] step_id
[ , [@step_name =] 'step_name' ]
[ , [@subsystem =] 'subsystem' ]
[ , [@command =] 'command' ]
[ , [@additional_parameters =] 'parameters' ]
[ , [@cmdexec_success_code =] success_code ]
[ , [@on_success_action =] success_action ]
[ , [@on_success_step_id =] success_step_id ]
[ , [@on_fail_action =] fail_action ]
[ , [@on_fail_step_id =] fail_step_id ]
[ , [@server =] 'server' ]
[ , [@database_name =] 'database' ]
[ , [@database_user_name =] 'user' ]
[ , [@retry_attempts =] retry_attempts ]
[ , [@retry_interval =] retry_interval ]
[ , [@os_run_priority =] run_priority ]
[ , [@output_file_name =] 'file_name' ]
[ , [@flags =] flags ]
[ , { [ @proxy_id = ] proxy_id
| [ @proxy_name = ] 'proxy_name' }
Siehe die Microsoft-Dokumentation für sp_update_jobstep
für eine Erklärung jedes Parameters sowie der Werte, die jeder akzeptiert.
Beachten Sie, dass durch das Aktualisieren eines Jobschritts die Jobversionsnummer erhöht wird.