Цепочка заданий агента SQL Server


9

У меня есть несколько рабочих пакетов для каждого я настроил работу в агенте сервера sql. Иногда я должен бежать все вместе. Каков наилучший способ запустить их все в заданной последовательности? Я немного удивлен, что агент сервера SQL не может включать задания в качестве шагов для выполнения. Я попробовал


1
+2 Я думал об этом прошлой ночью :)
jcolebrand

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

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

Вы говорите «пакеты», вы имеете в виду пакеты служб SSIS?
SqlSandwiches

согласился с Джоном Дакостой. Используйте шаги с условиями.
Alex_L

Ответы:


5

Существуют сторонние инструменты, которые позволят вам сделать это, если у вас нет времени на обучение или опыта работы с SSIS. Отказ от ответственности: я работаю на одну из этих компаний. Ознакомьтесь с SQL Sentry - он обрабатывает задания SQL Server (включая пакеты служб SSIS), запланированные задачи Windows и даже задания Oracle. Вот функции SQL Server (включая цепочки и очереди):

К сожалению, я не думаю, что вы сможете использовать SQL Agent самостоятельно для объединения нескольких заданий. Метод sp_start_job, предложенный Марианом, запускает задания асинхронно; Вы не можете дождаться их завершения, прежде чем переходить к следующей команде или следующему шагу.


Хм, я думаю, что он может запрашивать системные таблицы msdb, и иметь статус статуса других заданий (и их шагов). Если я ошибаюсь, я извинюсь и дам вам 6 пачек за это :-).
Мариан

Не понимаю твою точку зрения. Каким образом запросы к таблицам msdb помогут ему объединить работу? WHILE 1 = 1, пока статус не изменится? Запрос уведомлений? Конечно, есть много способов сделать это вручную, но это будет намного сложнее, чем просто вызов sp_start_job.
Аарон Бертран

8

Агент SQL не считается «корпоративным классом» в качестве планировщика заданий. В нем не хватает функциональности, которую вам приходится создавать самостоятельно. Одним из таких примеров будут зависимости. В результате вы вынуждены поместить большую часть этой логики в пакеты служб SSIS. Не обязательно плохо ... просто боль строить и управлять собой.

Итак, это мой ответ, создайте пакет служб SSIS и используйте некоторые команды t-sql для вызова заданий агента SQL по желанию. Убедитесь, что ваши требования и сценарии четко определены. Например, вы можете не захотеть, чтобы несколько заданий выполнялись одновременно по одним и тем же таблицам.

НТН


Глупо, я ожидаю "корпоративного" планировщика в таком зрелом продукте "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.