2010-10-19 33 views
9

Tôi có một số kế hoạch công việc trong Agent SQL của tôi:Làm thế nào để Ngăn chặn Sql Server Jobs để chạy đồng thời

  • Job1, thực hiện mỗi 2 phút
  • Job2, thực hiện mỗi 10 phút
  • Job3, thực hiện mỗi 15 phút

Như bạn thấy, nhiều công việc có thể chạy đồng thời. Khi các công việc này chạy đồng thời, nó sẽ làm cho việc sử dụng CPU đi đến 100%.

Có giải pháp nào không? Có cách nào để kiểm soát số lượng công việc đang chạy đồng thời không? Lưu ý: Tôi cần các công việc này để chạy khoảng trong khoảng thời gian thích hợp của chúng.

+0

Bạn có thể sử dụng Mutexes để ngăn nhiều công việc cùng một lúc - bạn đang sử dụng ngôn ngữ nào để gửi các truy vấn SQL tới DB? – SlappyTheFish

+0

đây là những công việc trong đại lý máy chủ sql. – ehsan

Trả lời

12

Sử dụng một khóa phiên qua sp_getapplock

Bạn đang yêu cầu cho người sử dụng điều khiển đồng thời và điều này thường là cách tốt nhất.

Điều này cho phép bạn chờ hoặc hủy bỏ nếu khóa đã được giữ bởi một công việc khác. Chúng tôi sử dụng nó ở một hoặc 2 nơi để ngăn chặn nhiều người dùng buộc phải thực hiện cùng một nhiệm vụ để chồng chéo lên nhau. Nó hoạt động tốt.

+3

+1: Dam Tôi ước gì tôi biết về những năm trước đây. Trước đây, tôi đã đưa ra giải pháp của riêng mình cho hương vị của vấn đề này bằng cách sử dụng bảng trạng thái để theo dõi trạng thái hiện tại của một tiến trình nhất định. –

+0

@ John Sansom: Rất vui khi được phục vụ ... Nếu bạn có thể sử dụng Khóa giao dịch, nó cũng tự giải phóng. – gbn

Các vấn đề liên quan