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

Sửa đổi công việc tác nhân máy chủ SQL (T-SQL)

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

Ví dụ

Trong ví dụ này, chúng tôi tạo một công việc, sau đó chúng tôi sử dụng sp_update_job để sửa đổi 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'BakMovies',
    @description = N'Backup the Movies database.',
    @category_name = 'Database Maintenance';
GO  
EXEC sp_add_jobstep  
    @job_name = N'BakMovies',  
    @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'BakMovies',  
   @schedule_name = N'Run_Sat_5AM';
GO  
EXEC sp_add_jobserver  
    @job_name = N'BakMovies';
GO

Đoạn mã trên sử dụng năm thủ tục được lưu trữ nhưng sp_update_job thủ tục chỉ cập nhật những chi tiết đã được tạo bằng sp_add_job thủ tục. Các thủ tục khác có thủ tục “cập nhật” phù hợp của riêng chúng.

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_job thủ tục.

EXEC sp_add_job  
    @job_name = N'BakMovies',
    @description = N'Backup the Movies database.',
    @category_name = 'Database Maintenance';

Trong trường hợp này, chúng tôi chỉ cung cấp ba đố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 số bắt buộc duy nhất là tên của công việc.

Cập nhật công việc

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

EXEC sp_update_job  
    @job_name = N'BakMovies',
    @new_name = N'BackupMoviesDB',
    @description = N'Backup the Movies database.',
    @category_name = 'Database Maintenance';

Điều duy nhất mà ví dụ này làm là thay đổi tên của công việc.

sp_update_job 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 mô tả và tên danh mục:

EXEC sp_update_job  
    @job_name = N'BakMovies',
    @new_name = N'BackupMoviesDB';

Tắt công việc

Bạn có thể tắt công việc bằng cách đặt @enabled thành 0 :

EXEC sp_update_job  
    @job_name = N'BackupMoviesDB',
    @new_name = N'BackupMoviesDB (DISABLED)',
    @enabled = 0;

Trong ví dụ này, tôi cũng đã thay đổi tên của công việc để làm rõ rằng công việc đã bị vô hiệu hóa.

Kiểm tra công việc

Bạn có thể sử dụng sp_help_job để xem cài đặt hiện tại của công việc.

Bạn có thể sử dụng nó có hoặc không có tham số. Khi được sử dụng mà không có tham số, nó trả về tất cả các công việc.

EXEC sp_help_job;

Nếu bạn chỉ muốn xem chi tiết của một công việc, bạn có thể cung cấp tên hoặc ID của 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:

Mặc dù, khi cung cấp tên, bạn sẽ cần phải nhớ họ mà bạn đã cung cấp công việc. Trong trường hợp của chúng tôi, nếu chúng tôi chạy quy trình này sau ví dụ trước (khi chúng tôi vô hiệu hóa công việc), chúng tôi sẽ cần thực hiện điều này:

EXEC sp_help_job 
	@job_name = 'BackupMoviesDB (DISABLED)';

Tuy nhiên, ID của công việc vẫn không đổi, vì vậy bạn có thể sử dụng ID đó bất kể tên của công việc là gì.

Ví dụ:

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

Điều gì xảy ra đối với các bước công việc, lịch trình, v.v.?

Sửa đổi một công việc không phá vỡ các bước của công việc đó và thông tin về lịch trình. Các bước và lịch trình của công việc sẽ vẫn nguyên vẹn sau khi bạn thực hiện bất kỳ sửa đổi nào.

Nếu bạn cần sửa đổi các bước hoặc lịch trình, bạn sẽ cần sử dụng quy trình được lưu trữ thích hợp cho chúng (ví dụ:sử dụng sp_update_schedule để cập nhật lịch trình của nó và sp_update_jobstep để cập nhật bước công việc của nó).

Cú pháp đầy đủ

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

sp_update_job [ @job_id =] job_id | [@job_name =] 'job_name'  
     [, [@new_name =] 'new_name' ]   
     [, [@enabled =] enabled ]  
     [, [@description =] 'description' ]   
     [, [@start_step_id =] step_id ]  
     [, [@category_name =] 'category' ]   
     [, [@owner_login_name =] 'login' ]  
     [, [@notify_level_eventlog =] eventlog_level ]  
     [, [@notify_level_email =] email_level ]  
     [, [@notify_level_netsend =] netsend_level ]  
     [, [@notify_level_page =] page_level ]  
     [, [@notify_email_operator_name =] 'operator_name' ]  
     [, [@notify_netsend_operator_name =] 'netsend_operator' ]  
     [, [@notify_page_operator_name =] 'page_operator' ]  
     [, [@delete_level =] delete_level ]   
     [, [@automatic_post =] automatic_post ]

Xem tài liệu của Microsoft về sp_update_job để 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. Cách NULLIF () hoạt động trong SQL Server

  2. Cách sử dụng hàm IDENTITY () trong SQL Server

  3. SQL chọn tối đa (ngày) và giá trị tương ứng

  4. Tạo một mô hình khung thực thể mở rộng nhiều cơ sở dữ liệu

  5. Trả lại danh sách các bảng từ một máy chủ được liên kết trong SQL Server (ví dụ T-SQL)