Một số mục tiêu MSX của SQL Server hiển thị là Bình thường, Bị chặn


7

Tôi đã tập trung công việc của trang trại của mình vào MSX, bao gồm khoảng 70 phiên bản SQL Server. Dường như ngẫu nhiên, ít nhất một lần một tuần, một số trường hợp sẽ ngừng chấp nhận hướng dẫn. Trong cửa sổ MSX Quản lý Máy chủ mục tiêu, thay vì tất cả các phiên bản hiển thị là Bình thường , chúng hiển thị là Bình thường, Bị chặn . Tôi đã không tìm ra lý do tại sao điều này xảy ra. Xác định và tái nhập ngũ thường chữa khỏi căn bệnh này, nhưng điều đó có nghĩa là phải thêm lại mục tiêu đó trong bất kỳ công việc thích hợp nào, vì vậy tôi thà giải quyết nguyên nhân hơn là chịu đựng cách giải quyết.

Có lời khuyên nào không? Tôi muốn tiếp tục sử dụng các công cụ của SQL Server để quản trị nhiều máy chủ, nhưng vẫn mở cho các con đường khác.


1
Hiểu rồi. Hành động cần thực hiện là thực thi sp_resync_targeterver, từ MSX. Hoạt động như một lá bùa. Cảm ơn, BOL!
Oliver

Câu trả lời:


2

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;
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.