Łączenie zadań agenta programu SQL Server

9

Mam kilka pakietów roboczych dla każdego Mam skonfigurowane zadanie w agencie serwera SQL. Czasami powinienem biec razem. Jaki jest najlepszy sposób, aby uruchomić je wszystkie w danej sekwencji? Jestem trochę zaskoczony, że agent serwera SQL nie może uwzględnić zadań jako kroków zadania do wykonania. Próbowałem

nojetlag
źródło
1
+2 Myślałem o tej ostatniej nocy :)
jcolebrand
1
czy każdy z twoich przedmiotów musi być osobną pracą? Czy można je skonfigurować jako zadanie główne z osobnymi krokami zadania i dla każdego kroku zadania dodać t-sql lub inną logikę, która określa, czy krok powinien zostać uruchomiony i jak (np. Jeśli (warunek = prawda) działa inaczej, nic nie rób
johndacostaa
Dziękuję wszystkim za udzielenie mi pomocy, wygląda na to, że Aarons zasugerował sposób, aby zbliżyć się do tego, czego potrzebuję.
Zobaczę,
Mówisz „paczki”, czy masz na myśli paczki SSIS?
SqlSandwiches
zgodził się z Johnem DaCostą. Użyj kroków z warunkami.
Alex_L,

Odpowiedzi:

5

Istnieją narzędzia innych firm, które pozwolą ci to zrobić, jeśli nie masz czasu na naukę lub istniejącej wiedzy specjalistycznej, aby korzystać z SSIS. Uwaga: Pracuję dla jednej z tych firm. Sprawdź SQL Sentry - obsługuje zadania SQL Server (w tym pakiety SSIS), zaplanowane zadania Windows, a nawet zadania Oracle. Oto funkcje programu SQL Server (w tym tworzenie łańcuchów i kolejkowanie):

Niestety nie sądzę, że będziesz w stanie samodzielnie używać agenta SQL do łączenia wielu zadań. Sugerowana przez Marian metoda sp_start_job uruchamia zadania asynchronicznie; nie możesz czekać na ich zakończenie przed przejściem do następnego polecenia lub następnego kroku.

Aaron Bertrand
źródło
Umm, myślę, że może on przeszukiwać tabele systemowe msdb i mieć status innych zadań (i ich kroków). Jeśli się mylę, przeproszę cię i dam ci 6 paczek za ujawnienie tego :-).
Marian
Nie rozumiem o co ci chodzi. W jaki sposób odpytywanie tabel msdb pomoże mu połączyć zadania razem? DO 1 = 1, dopóki status się nie zmieni? Powiadomienia o zapytaniach? Oczywiście istnieje wiele sposobów, aby to zrobić ręcznie, ale będzie to o wiele bardziej skomplikowane niż wywoływanie sp_start_job.
Aaron Bertrand
8

Agenta SQL nie uważa się za „klasę korporacyjną” jako program do planowania zadań. Brakuje mu wielu funkcji, które musisz zbudować samodzielnie. Jednym z takich przykładów byłyby zależności. W rezultacie jesteś zmuszony umieścić większość tej logiki w pakietach SSIS. Niekoniecznie zła rzecz ... po prostu ból w budowaniu i zarządzaniu sobą.

Tak więc, moja odpowiedź, zbuduj pakiet SSIS i użyj niektórych poleceń t-sql, aby wywoływać zadania SQL Agent zgodnie z potrzebami. Upewnij się, że masz jasno określone wymagania i scenariusze. Na przykład możesz nie chcieć, aby wiele zadań trafiało do tych samych tabel jednocześnie.

HTH

SQLRockstar
źródło
Głupie, że oczekuję harmonogramu „Enterprise” w tak dojrzałym produkcie „Enterprise Edition” :). Miałem nadzieję, ponieważ mogę uwzględnić wiele rzeczy jako krok, zabawne, że najbardziej oczywista (inna praca) nie jest dostępna jako obiekt wykonywalny. Korzystam z zadań, aby uruchamiać pakiety SSIS, które mają dużą złożoność, konieczność zbudowania kolejnego pakietu SSIS w celu elastycznego uruchamiania zadań nie wydaje mi się właściwym podejściem. Zwłaszcza, że ​​znów skończę z asynch sp_start_job.
nojetlag
6

Powinieneś spróbować użyć skryptu T-SQL w krokach zadań, używając systemowej procedury przechowywanej sp_start_job . Pozwoli ci to ustalić, ile prac chcesz.

Marian
źródło
Jak wspomina Aaron, nie pozwoli mi to zachować określonej sekwencji, ponieważ wszyscy będą strzelać prawie w tym samym czasie (ze względu na to, że są asynchroniczni). Więc to nie jest tak naprawdę podejście łańcuchowe, a raczej podejście kolekcjonerskie :)
nojetlag
Ok, może nie jest to bardzo proste, ale nadal możesz przeszukiwać tabele systemowe msdb, możesz poczekać na określony czas .. a następnie ponownie wykonać zapytanie. Możesz też utworzyć tabelę śledzenia, w której ustalasz status kroków zadania i na podstawie wyzwalacza możesz automatycznie uruchomić kolejne kroki. Lub możesz kupić narzędzie, które to robi i dodaje nieco więcej wartości, a także pokazuje fantazyjny interfejs użytkownika :-). Istnieją opcje dla każdego ..
Marian