2009-04-03 27 views
5

Chúng tôi có một công việc hẹn giờ SP đã chạy tốt trong một thời gian. Gần đây, các quản trị viên đã gia nhập một máy chủ khác vào trang trại và do đó SharePoint đã quyết định bắt đầu chạy công việc hẹn giờ này trên máy chủ khác này. Vấn đề là máy chủ không có tất cả các phụ thuộc được cài đặt (tức là, Oracle) trên đó và do đó công việc không thành công. Tôi chỉ đang tìm con đường kháng cự ít nhất ở đây. Câu hỏi của tôi là có một cách để buộc một công việc hẹn giờ để chạy trên máy chủ bạn muốn nó?Làm thế nào để bạn hướng dẫn một trang trại SharePoint để chạy một công việc hẹn giờ trên một máy chủ cụ thể?

[Chỉnh sửa] Nếu tôi có thể thực hiện thông qua mã hoạt động cho tôi. Tôi chỉ cần biết những gì API là để làm điều này nếu có tồn tại.

Trả lời

7

Tôi xin lỗi nếu tôi đang thúc đẩy điều hiển nhiên; Tôi chưa từng thấy ai đi sâu vào nó.

Hạn chế công việc hẹn giờ tùy chỉnh (nghĩa là, lớp công việc hẹn giờ của riêng bạn có nguồn gốc từ SPJobDefinition) được thực hiện bằng cách kiểm soát các tham số của hàm tạo.

Công việc hẹn giờ thường chạy trên máy chủ nơi chúng được gửi (như được chỉ định bởi vinny) giả sử không có máy chủ mục tiêu nào được chỉ định trong khi tạo công việc hẹn giờ. Tuy nhiên, hai hàm khởi tạo quá tải cho kiểu SPJobDefinition, chấp nhận một SPServer và một SPJobLockType làm tham số thứ ba và thứ tư, tương ứng. Sử dụng hai tham số này đúng cách sẽ cho phép bạn ra lệnh nơi công việc của bạn chạy.

Bằng cách chỉ định máy chủ mục tiêu của bạn làm SPServer và SPJobLockType của "Công việc", bạn có thể hạn chế trường hợp công việc hẹn giờ bạn tạo để chạy trên máy chủ bạn chọn.

Để biết tài liệu về những gì tôi đã mô tả, hãy xem MSDN: http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spjobdefinition.spjobdefinition.aspx.

Tôi không biết gì về mã bạn đang chạy, nhưng công việc hẹn giờ tùy chỉnh thường được thiết lập trong khi kích hoạt tính năng. Tôi có cảm giác rằng codebase của bạn có thể không phải là của riêng bạn (?); nếu có, bạn có thể muốn tìm một hoặc nhiều loại/lớp có nguồn gốc từ SPFeatureReceiver. Trong phương thức FeatureActivated của các lớp như vậy là nơi bạn có thể tìm thấy mã thực sự thực hiện instantiation job timer.

Tất nhiên, bạn cũng sẽ muốn xem lớp công việc của bộ đếm giờ tùy chỉnh (hoặc các lớp) để xem cách chúng được khởi tạo như thế nào. Đôi khi, các nhà phát triển sẽ xây dựng sự khởi tạo của lớp vào chính lớp đó (ví dụ, thông qua mẫu Phương thức Factory).Tuy nhiên, giữa lớp công việc hẹn giờ và triển khai SPFeatureReceiver, bạn nên trên đường tìm kiếm những gì cần thay đổi.

Tôi hy vọng điều đó sẽ hữu ích!

+0

Cảm ơn, đó là chính xác những gì tôi đang tìm kiếm. – James

+0

+1 Thông tin tốt, tôi không biết điều này là có thể. –

2

Máy chủ trong một trang trại cần phải giống hệt nhau. Nếu bạn tình cờ sử dụng máy ảo cho giao diện người dùng web của mình, bạn có thể chụp một máy chủ và các bản sao dự phòng để bạn biết tất cả chúng đều giống hệt nhau.

+0

+1 Tôi đồng ý với điều đó, nhưng quản trị viên mạng của khách hàng không nhìn thấy theo cách đó. Tôi chỉ đang tìm kiếm một lựa chọn ít đối đầu hơn ở đây. – James

+0

Ở đây tại Raytheon, Microsoft đã yêu cầu chúng tôi làm cho các máy chủ của chúng tôi trùng lặp vì quy trình làm việc của Windows sẽ không hoạt động và chúng tôi có nhiều lỗi không thể đoán trước khác. Tôi upvoted câu trả lời của Dave. – shapr

1

Công việc hẹn giờ trên mỗi định nghĩa chạy trên tất cả giao diện người dùng web.

Nếu bạn cần logic được lập biểu để chạy trên một máy chủ cụ thể, bạn cần phải mã hóa cụ thể việc này trong công việc hẹn giờ hoặc sử dụng Dịch vụ NT "chuẩn" thay thế.

+0

Mã hóa nó trong, là một tùy chọn. Có một API, nơi tôi có thể hướng dẫn SharePoint mà tôi muốn nó chạy trên một máy chủ cụ thể? – James

0

Bạn có thể triển khai Dịch vụ web với nhật ký nghiệp vụ và triển khai Dịch vụ web đó với một máy. Sau đó, Công việc hẹn giờ của bạn có thể kích hoạt dịch vụ web của bạn theo định kỳ.

Có thể điều đó không quan trọng trong đó công việc hẹn giờ của bạn đang chạy. SharePoint tự quyết định nơi để chạy công việc hẹn giờ.

1

Tôi nghĩ rằng tác dụng phụ của việc đặt SPJobLockType thành 'Công việc' là nó sẽ thực thi trên máy chủ nơi công việc được gửi.