Khi sử dụng MSX tập trung (công việc Đại lý SQL đa máy chủ), có một số thiếu sót trong GUI SSMS để quản lý các công việc đa máy chủ đó.
Khi máy chủ mục tiêu gặp sự cố khi tải xuống hướng dẫn cho công việc, những lỗi đó sẽ được liệt kê msdb.dbo.sysdownloadlist
. Tuy nhiên, trong GUI SSMS, điều này chỉ biểu hiện khi công việc hiển thị là có trạng thái "Bị chặn".
Bạn có thể sử dụng EXEC sp_help_targetserver @server_name = 'MyServer';
để xem hướng dẫn, bao gồm các lỗi và hướng dẫn chưa gửi.
Microsoft khuyên bạn nên đồng bộ lại toàn bộ máy chủ khi bạn thấy rằng nó bị chặn. Điều này được thực hiện bằng cách thực hiện lệnh EXEC sp_resync_targetserver @server_name = 'MyServer';
Làm điều này sẽ xóa và tạo lại tất cả các công việc trên máy chủ đích. Điều này có thể gây rối (bạn có thể tưởng tượng điều gì có thể sai nếu bạn bỏ và tạo lại tất cả các công việc của mình cùng lúc với một công việc nên chạy). Ngoài ra, nó sẽ dẫn đến mất lịch sử công việc trên mục tiêu.
Thay vào đó, bạn có thể chọn tự sửa chữa (các) công việc cụ thể là một vấn đề:
DECLARE @server_name sysname = 'MyServer';
DECLARE @job_name sysname = 'The Job That Broke';
-- Get the Job_ID
DECLARE @job_id uniqueidentifier;
SELECT @job_id = job_id FROM msdb.dbo.sysjobs WHERE name = @job_name;
--Delete existing download instructions for this server/job
DELETE dl
FROM msdb.dbo.sysdownloadlist AS dl
WHERE dl.target_server = @server_name
AND dl.object_id = @job_id;
--Post new instructions to delete & re-add job
EXECUTE msdb.dbo.sp_post_msx_operation
@operation = 'DELETE',
@object_type = 'JOB',
@job_id = @job_id,
@specific_target_server = @server_name;
EXECUTE msdb.dbo.sp_post_msx_operation
@operation = 'INSERT',
@object_type = 'JOB',
@job_id = @job_id,
@specific_target_server = @server_name;