Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cập nhật một bước công việc cho một công việc đại lý máy chủ SQL (T-SQL)

Trong SQL Server, bạn có thể sử dụng sp_update_jobstep thủ tục được lưu trữ để sửa đổi bước công việc hiện có của công việc SQL Server Agent.

Khi bạn tạo công việc SQL Server Agent, bạn tạo một hoặc nhiều bước công việc cho công việc đó. sp_update_jobstep quy trình cho phép bạn cập nhật một bước công việc cụ thể độc lập với công việc thực tế hoặc bất kỳ bước công việc nào khác.

Ví dụ

Trong ví dụ này, chúng tôi tạo một công việc với một bước công việc, sau đó chúng tôi sử dụng sp_update_jobstep để sửa đổi bước công việc.

Tạo công việc

Đầu tiên, hãy tạo công việc:

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

Đoạn mã trên sử dụng năm thủ tục được lưu trữ, nhưng sp_add_jobstep là thủ tục duy nhất chứa các chi tiết có thể được thay đổi bằng sp_update_jobstep . Các thủ tục khác có các thủ tục “cập nhật” phù hợp của riêng chúng (chẳng hạn như sp_update_jobsp_update_schedule ).

Vì vậy, chỉ cần nói rõ, phần sau là phần mà chúng ta có thể cập nhật với sp_update_jobstep thủ tục.

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;

Trong trường hợp này, chúng tôi đã cung cấp sáu đối số khi tạo công việc. Thủ tục thực sự chấp nhận nhiều hơn thế, nhưng điều này sẽ làm cho các mục đích của chúng tôi.

Cập nhật bước công việc

Bây giờ chúng ta có thể sử dụng sp_update_jobstep để sửa đổi bước công việc trên.

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;

Điều duy nhất mà ví dụ này làm là tăng số lần thử lại từ 5 thành 10 .

sp_update_jobstep thủ tục được lưu trữ chỉ thay đổi những cài đặt mà các giá trị tham số được cung cấp. Nếu một tham số bị bỏ qua, cài đặt hiện tại sẽ được giữ lại.

Do đó, trong trường hợp này, chúng tôi có thể đã bỏ qua các đối số khác, như sau:

EXEC sp_update_jobstep  
    @job_name = N'BackupMoviesDB',
    @step_id = 1,
    @retry_attempts = 10;

Kiểm tra công việc

Bạn có thể sử dụng sp_help_job để nhận thông tin về các công việc SQL Server Agent trong hệ thống.

Bạn có thể sử dụng nó có hoặc không có tham số, nhưng để biết chi tiết bước công việc, bạn cần cung cấp tên hoặc ID công việc.

Như thế này:

EXEC sp_help_job 
	@job_name = 'BackupMoviesDB';

Đây là kết quả trông như thế nào khi thực thi nó trong SSMS:

Dưới đây là ví dụ về mã khi sử dụng ID:

EXEC sp_help_job 
	@job_id = '158D714B-6686-48FD-BB41-D35C6EE70AED';

Khi sử dụng ID, bạn có thể bỏ qua tên tham số nếu muốn.

Ví dụ:

EXEC sp_help_job '158D714B-6686-48FD-BB41-D35C6EE70AED';

Cú pháp đầy đủ

Cú pháp đầy đủ của sp_update_jobstep như sau:

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' }

Xem tài liệu của Microsoft về sp_update_jobstep để biết giải thích về từng tham số, cũng như các giá trị mà mỗi tham số chấp nhận.

Lưu ý rằng việc cập nhật một bước công việc sẽ làm tăng số phiên bản công việc.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách thay thế NULL bằng một giá trị khác trong SQL Server - ISNULL ()

  2. Làm thế nào để sửa lỗi Microsoft SQL Server Error 926? - Đã giải quyết

  3. Chèn hàng loạt với bộ định tính văn bản trong SQL Server

  4. SQL Server - tham gia bên trong khi cập nhật

  5. Không hỗ trợ OVER trong MS SQL Server 2005?