Chuỗi công việc đại lý SQL Server


9

Tôi có một số gói công việc cho mỗi tôi đã thiết lập một công việc trong đại lý máy chủ sql. Đôi khi tôi nên chạy tất cả cùng nhau. Cách tốt nhất để chạy tất cả chúng theo một trình tự nhất định là gì? Tôi hơi ngạc nhiên khi đại lý máy chủ sql không thể bao gồm các công việc như các bước công việc sẽ được thực thi. Tôi đã thử


1
+2 Tôi đã suy nghĩ về điều này tối qua :)
jcolebrand

1
mỗi mục của bạn cần phải là một công việc riêng biệt? Họ có thể được thiết lập thành một công việc chính với các bước công việc riêng biệt và cho mỗi bước công việc thêm t-sql hoặc logic khác để xác định xem bước đó có nên chạy không và làm thế nào (ví dụ if (condition = true) không làm việc gì khác.
johndacostaa

Cảm ơn mọi người đã giúp đỡ tôi, có vẻ như cách Aarons đề xuất là cách gần nhất với những gì tôi cần. Tôi sẽ xem liệu tôi có được phép cho một công cụ để làm việc đó không, nếu không trong SQL Agent tôi sẽ phải thực hiện một công việc quái vật :(.
nojetlag 04

Bạn nói "gói", ý bạn là gói SSIS?
SqlSandwiches

đồng ý với John DaCosta. Sử dụng các bước với điều kiện.
Alex_L

Câu trả lời:


5

Có những công cụ của bên thứ 3 ngoài kia sẽ cho phép bạn làm điều này, nếu bạn không có thời gian học tập hoặc chuyên môn hiện có để sử dụng SSIS. Tuyên bố miễn trừ trách nhiệm: Tôi làm việc cho một trong những công ty đó. Kiểm tra Trình quản lý sự kiện từ SQL Sentry - nó xử lý các công việc Máy chủ SQL (bao gồm các gói SSIS), Nhiệm vụ theo lịch trình của Windows và thậm chí các công việc của Oracle. Dưới đây là các tính năng của SQL Server (bao gồm cả chuỗi và xếp hàng):

http://sqlsentry.net/event-manager/sql-server-enterprise-features.asp

Thật không may, tôi không nghĩ rằng bạn có thể tự mình sử dụng SQL Agent để xâu chuỗi nhiều công việc. Phương thức sp_start_job mà Marian đề xuất khởi động các công việc không đồng bộ; bạn không thể đợi chúng hoàn thành trước khi chuyển sang lệnh tiếp theo hoặc bước tiếp theo.


Umm, tôi nghĩ rằng anh ta có thể truy vấn các bảng hệ thống msdb và có trạng thái của các công việc khác (và các bước của chúng). Nếu tôi sai, tôi sẽ xin lỗi và đưa cho bạn 6 gói để tiết lộ điều này :-).
Mary

Đừng hiểu quan điểm của bạn. Làm thế nào để truy vấn các bảng msdb sẽ giúp anh ta xâu chuỗi các công việc lại với nhau? WHILE 1 = 1 cho đến khi trạng thái thay đổi? Truy vấn thông báo? Chắc chắn có nhiều cách bạn có thể làm điều này bằng tay, nhưng nó sẽ trở nên phức tạp hơn rất nhiều so với việc chỉ gọi sp_start_job.
Aaron Bertrand

8

Tác nhân SQL không được coi là "lớp doanh nghiệp" như một lịch trình công việc. Nó thiếu rất nhiều chức năng mà cuối cùng bạn phải tự xây dựng. Một ví dụ như vậy sẽ là phụ thuộc. Kết quả là bạn buộc phải đưa phần lớn logic này vào các gói SSIS. Không nhất thiết là một điều xấu ... chỉ là một nỗi đau để xây dựng và quản lý bản thân.

Vì vậy, đó là câu trả lời của tôi, xây dựng gói SSIS và sử dụng một số lệnh t-sql để gọi các công việc của Tác nhân SQL như mong muốn. Hãy chắc chắn rằng bạn có yêu cầu và kịch bản được xác định rõ ràng. Ví dụ, bạn có thể không muốn có nhiều công việc đánh vào cùng một bảng.

HTH


Ngớ ngẩn tôi mong đợi một lịch trình "doanh nghiệp" trong một sản phẩm "Phiên bản doanh nghiệp" trưởng thành như vậy :). Tôi đã hy vọng vì tôi có thể bao gồm nhiều thứ như một bước, buồn cười là rõ ràng nhất (một công việc khác) không có sẵn như là đối tượng thực thi. Tôi sử dụng các công việc để chạy các gói SSIS có nhiều phức tạp, phải xây dựng một gói SSIS khác để điều hành linh hoạt các công việc dường như không phải là cách tiếp cận phù hợp với tôi. Đặc biệt là vì tôi sẽ kết thúc một lần nữa với as_ch sp_start_job.
nojetlag

6

Bạn nên thử bằng cách sử dụng tập lệnh T-SQL trong các bước của công việc, sử dụng quy trình được lưu trữ hệ thống sp_start_job . Nó sẽ cho phép bạn xâu chuỗi bao nhiêu công việc bạn muốn.


Như Aaron đã đề cập, nó sẽ không cho phép tôi giữ một chuỗi nhất định, vì tất cả chúng sẽ bắn gần như cùng một lúc (do thực tế là chúng không hoạt động). Vì vậy, đây không thực sự là một cách tiếp cận chuỗi, mà là một cách tiếp cận bộ sưu tập :)
nojetlag

Ok, có thể nó không đơn giản lắm, nhưng bạn vẫn có thể truy vấn các bảng hệ thống msdb, bạn có thể đợi một thời gian cụ thể .. sau đó truy vấn lại. Hoặc bạn có thể tạo một bảng theo dõi nơi bạn đặt trạng thái các bước công việc và dựa trên trình kích hoạt trên đó, bạn có thể tự động kích hoạt các bước tiếp theo. Hoặc bạn có thể mua một công cụ thực hiện điều đó và thêm một số giá trị khác và cũng hiển thị giao diện người dùng ưa thích :-). Có nhiều lựa chọn cho mọi người ..
Marian
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.