Nhận được một Yêu cầu để chạy công việc bị từ chối vì công việc đã được chạy Khi không có công việc nào đang chạy?


7

Vì vậy, có một công việc ETL chạy qua các dịch vụ tích hợp mà tôi bắt đầu bằng tên công việc SQL StartStageStore. Bước cuối cùng của công việc này là bắt đầu một công việc khác và báo cáo thành công. Công việc mà cuộc gọi này được gọi là LoopStageStore. Tất cả LoopStageStore thực hiện một quy trình được lưu trữ, khởi động lại công việc StartStageStore một lần nữa theo cách này, chúng tôi liên tục kéo dữ liệu nguồn vào hệ thống của mình. Công việc này đã được chạy trong nhiều tuần nay mà không thất bại. Cho đến hai đêm qua, tôi bắt đầu gặp lỗi này "Được thực thi với tư cách là người dùng: AgentUser. Lỗi SQLServerAgent: Yêu cầu chạy công việc Giai đoạn / Cửa hàng AgentUser đã từ chối vì công việc đã chạy từ yêu cầu của User AgentUser. [SQLSTATE 42000] (Lỗi 22022) Bước thất bại. "

Điều này không nên xảy ra khi công việc StartStageStore kết thúc và không còn chạy khi LoopStageStore đã bắt đầu.

StageStoreJob

Ở đây chúng ta có thể thấy bước cuối cùng được thực hiện lúc 12:19:14.LoopStageStore

Và công việc tiếp theo thất bại lúc 12:19:15 Nói rằng StartStageStore hiện đang chạy. Tôi đã có một cách giải quyết cho vấn đề này khi tôi chỉ trì hoãn công việc thứ hai. Tôi chỉ tự hỏi nếu có ai biết tại sao điều này sẽ xảy ra.

BEGIN
WAITFOR DELAY '00:01';
    EXECUTE dbo.LoopStageStore
END; GO

Là sysjobhistory lớn? Có thể là công việc đầu tiên cần một lượng thời gian đáng kể để cập nhật lịch sử công việc.
Aaron Bertrand

Không phải vậy. Chúng tôi chỉ giữ một tuần giá trị của lịch sử nhật ký công việc. Tuy nhiên đó là giả định của tôi về những gì đang xảy ra. Điều khiến tôi bối rối là vấn đề này chỉ xuất hiện nhiều nhất một lần một ngày. Công việc chạy vững chắc hơn 20 lần một ngày.
Zane

Một hệ thống SQL Server trải qua nhiều giai đoạn hoạt động trong một ngày. Bạn đã xem khóa theo dõi và chặn trong msdb suốt cả ngày và xem liệu bạn có phát hiện ra bất kỳ mối tương quan nào không?
Aaron Bertrand

Vấn đề dường như là một lần nào đó mất nhiều thời gian hơn 1 giây để hoàn thành nhật ký ghi vào Bảng hoàn thành công việc (Tham khảo Starcraft tôi biết đó không phải là tên thật). Vì vậy, thời gian chờ đợi tôi đã đặt trên đó nên khắc phục vấn đề.
Zane

Câu trả lời:


3

Vì vậy, vấn đề tôi gặp phải là thời gian ghi vào tệp nhật ký để hoàn thành công việc đôi khi mất nhiều thời gian hơn để chạy thủ tục được lưu trữ để khởi động lại vòng lặp này.

Giải pháp cho vấn đề này là cách giải quyết ban đầu của tôi.

Trong trường hợp bất cứ ai muốn sử dụng nó ở đây là mã.

BEGIN
WAITFOR DELAY '00:01';
    EXECUTE dbo.LoopStageStore
END; GO

Chỉ cần làm cho nó chờ một chút.

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.