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

Thêm một bước công việc vào một công việc tác nhân SQL Server hiện tại (T-SQL)

Khi bạn tạo công việc SQL Server Agent với T-SQL, bạn sử dụng sp_add_jobstep thủ tục được lưu trữ để thêm từng bước công việc.

Nếu bạn cần thêm một bước mới cho công việc đó, bạn có thể sử dụng sp_add_jobstep một lần nữa để thêm bước công việc mới.

Nhưng bạn cũng có thể cần sửa đổi bước hiện có, tùy thuộc vào cách bạn muốn công việc tiến triển qua các bướ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_add_jobstep để thêm bước thứ hai cho công việc đó. Sau đó, chúng tôi sử dụng sp_update_jobstep cập nhật bước công việc đầu tiên để nó tiến tới bước công việc thứ hai ngay sau khi hoàn thành.

Tạo công việc

Trước tiên, hãy tạo công việc bằng một bước:

USE msdb;  
GO  
EXEC sp_add_job  
    @job_name = N'SqlAgentTest',
    @description = N'Insert data.',
    @category_name = 'Database Maintenance';
GO  
EXEC sp_add_jobstep  
    @job_name = N'SqlAgentTest',  
    @step_name = N'Insert data for step 1',  
    @subsystem = N'TSQL',  
    @command = N'USE TestDB; INSERT INTO SqlAgentJobs VALUES (''SqlAgentTest'', 1, SYSDATETIME())';
GO
EXEC sp_add_schedule 
    @schedule_name = N'Run_Sat_6AM',
    @freq_type = 8,
    @freq_interval = 64,
    @freq_recurrence_factor = 1,
    @active_start_time = 060000;
GO  
EXEC sp_attach_schedule  
   @job_name = N'SqlAgentTest',  
   @schedule_name = N'Run_Sat_6AM';
GO  
EXEC sp_add_jobserver  
    @job_name = N'SqlAgentTest';
GO

Chỉ cần nói rõ, phần sau là bit đã thêm bước:

EXEC sp_add_jobstep  
    @job_name = N'SqlAgentTest',  
    @step_name = N'Insert data for step 1',  
    @subsystem = N'TSQL',  
    @command = N'USE TestDB; INSERT INTO SqlAgentJobs VALUES (''SqlAgentTest'', 1, SYSDATETIME())';

Thêm một bước công việc mới

Bây giờ chúng ta có thể sử dụng sp_add_jobstep một lần nữa để thêm một bước mới cho công việc.

USE msdb;
EXEC sp_add_jobstep  
    @job_name = N'SqlAgentTest',  
    @step_name = N'Insert data for step 2',  
    @subsystem = N'TSQL',  
    @command = N'USE TestDB; INSERT INTO SqlAgentJobs VALUES (''SqlAgentTest'', 2, SYSDATETIME())';

Điều này bổ sung thêm bước thứ hai cho công việc.

Cập nhật Quy trình làm việc

Nếu bạn muốn công việc tự động tiến triển từ bước 1 đến bước 2, bạn cần chỉ định điều đó trong bước công việc 1.

Hành động mặc định cho bất kỳ bước công việc nào là bỏ công việc thành công ngay khi nó thành công. Nếu bước không thành công, hành động mặc định là thoát khi không thành công.

Vì vậy, khi công việc của chúng tôi hiện tại, công việc sẽ kết thúc ngay sau khi bước 1 hoàn thành (không chạy bước 2) và lịch sử sẽ báo cáo rằng công việc đã chạy thành công.

Do đó, chúng ta cần sử dụng sp_update_jobstep cập nhật bước 1, để bước này chuyển sang bước 2 sau khi hoàn thành thành công.

Chúng tôi cũng có thể chỉ định phải làm gì nếu bước 1 không thành công.

USE msdb;
EXEC sp_update_jobstep  
    @job_name = N'SqlAgentTest',  
    @step_id = 1,  
    @on_success_action = 3,  
    @on_fail_action = 3;

Trong trường hợp này, tôi đã chỉ định rằng nó sẽ chuyển sang bước tiếp theo cả nếu nó thành công và cả nếu nó không thành công.

Các giá trị mà bạn có thể cung cấp cho @on_success_action@on_fail_action như sau:

1 Thoát thành công. Đây là giá trị mặc định cho @on_success_action .
2 Thoát mà không thành công. Đây là mặc định cho @on_fail_action .
3 Chuyển sang bước tiếp theo.
4 Chuyển đến bước (ID). Đây là nơi bạn cung cấp ID của bước mà bạn muốn công việc tiến triển.

Xem các bước 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.

Chúng tôi có thể sử dụng nó để xem cả hai bước công việc mà chúng tôi đã tạo cho công việc.

Như thế này:

EXEC sp_help_job 
	@job_name = 'SqlAgentTest';

Đâ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 = '343D9F2A-070A-4367-BF69-4248FFF57D70';

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 '343D9F2A-070A-4367-BF69-4248FFF57D70';

Bạn cũng có thể sử dụng sp_help_jobstep theo cách tương tự để chỉ trả lại các bước công việc (không có tất cả các thông tin khác về công việc). Điều này chấp nhận tên hoặc ID công việc, cũng như tên hoặc ID bước tùy chọn.

Cú pháp đầy đủ

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

sp_add_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 = ] 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_add_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.

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hàm IndexOf trong T-SQL

  2. Cấu hình thông báo thư cơ sở dữ liệu trong MS SQL Server

  3. Bắt Hibernate và SQL Server để chơi tốt với VARCHAR và NVARCHAR

  4. Tính tổng chi phí sở hữu theo dõi máy chủ SQL của bạn

  5. Cách tắt tất cả các Ràng buộc Kiểm tra trong Cơ sở dữ liệu SQL Server - Hướng dẫn SQL Server / TSQL Phần 87