SSIS, Обрабатывающий Внешние Проблемы

У меня есть пакет служб SSIS, который отлично работает. Пакет работает каждую ночь и занимает около 4 часов. Я новичок в SSIS, поэтому я хочу посмотреть, какие у меня есть варианты. Я не нахожу в Интернете ничего об этих двух проблемах, поэтому любой совет очень ценится.

  1. Что делать, если у меня возникла внешняя проблема, такая как сбой питания / случайный перезапуск. Есть ли способ предупредить кого-то или заставить пакет начать заново при перезапуске.

  2. Пару недель назад был процесс, который зависал и блокировал таблицу, в результате чего процесс не выполнялся. Как лучше всего справиться с тем, чтобы у меня был правильный доступ перед запуском, а если нет - получить доступ. Я в порядке с убийством процессов и т. Д.

Ищете информацию о лучших практиках. Спасибо

1 ответ

Решение

Для #1 - в SSIS нет встроенного механизма "перезапуска", поскольку для начала не существует встроенного механизма "запуска". Вам нужно взглянуть на процесс, которым вы управляете по расписанию выполнения ваших пакетов, который, как я предполагаю, может быть агентом SQL. Учитывая это, вы можете определить, не удалось ли выполнить задание агента SQL, и / или перезапустить это задание, независимо от того, является ли содержимое задания пакетами служб SSIS или нет. Существует довольно много хранимых процедур для мониторинга и запроса выполнения задания и результатов. Вы также можете реализовать свой собственный механизм для записи статуса работы / пакета. SSIS действительно предлагает "контрольные точки", чтобы помочь вам перезапустить пакеты с определенных точек, но общее мнение об этой функции заключается в том, что она ограничена в своей применимости - ваш пробег может отличаться. Лично я всегда включаю маршрут сбоя в свою работу, чтобы отправить кому-нибудь письмо о сбое задания, и настраиваю мои задания и пакеты на идемпотентность, то есть их можно повторно запускать, не опасаясь неправильного выполнения одних и тех же операций дважды. Они либо "сбрасывают" среду (удаляют и перезагружают), либо могут точно определить, где они остановились.

Пункт № 2 - сложный вопрос, который сильно зависит от вашей среды и сценария. Вы можете использовать простые задачи, такие как задача "Выполнение SQL", для запуска "тестовых" команд, которые проверяются на сбой при наличии достаточных привилегий или блокировок. Или вы можете запросить напрямую через SP или другие механизмы, чтобы определить, нужно ли вам принимать меры по исправлению положения, прежде чем пытаться запустить мясо вашей упаковки. Использование ограничений прецедента "по ошибке" может помочь с такой логикой. Так могут обработчики событий.

Другие вопросы по тегам