Пов’язання завдань агента SQL Server


9

У мене є кілька робочих пакетів для кожного, у якого я налаштував роботу агента сервера sql. Іноді я повинен бігати всіх разом. Який найкращий спосіб запустити їх у певній послідовності? Я трохи здивований, що агент сервера sql не в змозі включити завдання як етапи виконання завдань. Я намагався


1
+2 Я думав про це вчора ввечері :)
jcolebrand

1
чи кожен ваш предмет повинен бути окремою роботою? Чи можуть вони бути налаштовані на головну роботу з окремими етапами завдання, і для кожного кроку завдання додайте t-sql або іншу логіку, яка визначає, чи повинен виконуватися крок і як (наприклад, якщо (умова = справжнє) інші роботи нічого не роблять.
johndacostaa

Дякую всім за те, що надали мені деяку допомогу, здається, що запропонований Аароном спосіб стає найближчим до того, що мені потрібно. Я побачу, якщо я отримаю дозвіл на інструмент для його виконання, інакше в рамках агента SQL мені доведеться зробити роботу монстра :(.
nojetlag

Ви говорите "пакети", ви маєте на увазі пакети SSIS?
SqlSandwiches

домовився з Джоном Дакостою. Використовуйте кроки з умовами.
Alex_L

Відповіді:


5

Існують інструменти сторонніх виробників, які дозволять вам це зробити, якщо у вас немає часу кривої навчання чи наявного досвіду для використання SSIS. Відмова: Я працюю в одній із цих компаній. Перевірте SQL Sentry - він обробляє завдання SQL Server (включаючи пакети SSIS), заплановані завдання Windows і навіть завдання Oracle. Ось функції SQL Server (включаючи ланцюги та чергування):

На жаль, я не думаю, що ви не зможете самостійно використовувати SQL-агент для ланцюжка кількох завдань. Метод sp_start_job, який запропонував Маріан, починає роботу асинхронно; Ви не можете чекати, коли вони завершаться, перш ніж перейти до наступної команди або наступного кроку.


Гм, я думаю, він може запитувати системні таблиці msdb і мати статус інших завдань (та їх кроків). Якщо я помиляюся, прошу вибачення і дам вам 6 пачок за розкриття цього :-).
Маріан

Не розумію вашої точки зору. Як запит таблиць msdb допоможе йому спільно виконувати завдання? ЧИ 1 = 1 до зміни статусу? Запити сповіщень? Звичайно, існує багато способів зробити це вручну, але це буде чорт набагато складніше, ніж просто виклик sp_start_job.
Аарон Бертран

8

Агент SQL не вважається "класом підприємства" як планувальник завдань. Не вистачає багато функціональних можливостей, які в кінцевому підсумку доведеться будувати самостійно. Одним із таких прикладів можуть бути залежності. В результаті ви змушені вводити більшість цієї логіки в пакети SSIS. Не обов’язково погана річ ... просто біль будувати та керувати собою.

Отже, це моя відповідь, складіть пакет SSIS і використовуйте деякі команди t-sql для виклику завдань агента SQL за бажанням. Переконайтеся, що ваші вимоги та сценарії чітко визначені. Наприклад, ви, можливо, не хочете мати кілька завдань, які одночасно потрапляють на одні й ті самі таблиці.

HTH


Нерозумно, я очікував, що "корпоративний" планувальник на такий зрілий продукт "Enterprise Edition" :). Я мав надію, оскільки я можу включати багато речей як крок, смішно, що сама очевидна (інша робота) недоступна як виконуваний об'єкт. Я використовую завдання для запуску пакетів SSIS, які мають велику складність, тому для мене, щоб створити інший пакет SSIS, щоб гнучко виконувати завдання, мені не підходить правильний підхід. Тим більше, що я знову опишуся з асинхроною sp_start_job.
nojetlag

6

Спробуйте спробувати використовувати сценарій T-SQL у кроках ваших завдань, використовуючи процедуру sp_start_job, що зберігається в системі . Це дозволить вам зав'язати кількість завдань, які ви хочете.


Що стосується змін від Аарона, це не дозволить мені зберегти задану послідовність, оскільки всі вони будуть стріляти майже одночасно (через те, що вони асинхронні). Тож це насправді не ланцюговий підхід, скоріше колекційний підхід :)
nojetlag

Гаразд, можливо, це не дуже просто, але ви все одно можете запитувати системні таблиці msdb, ви можете дочекатися певного часу .. потім запитувати знову. Або ви можете скласти таблицю відстеження, куди ви поставите статус кроків завдання та на основі тригера ви зможете автоматично запустити наступні кроки. Або ви можете придбати інструмент, який це робить, і додасть ще великої цінності, а також демонструє вишуканий інтерфейс користувача :-). Є варіанти для кожного ..
Marian
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.