Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
SSIS ограничить итерации цикла по времени выполнения
|
|||
|---|---|---|---|
|
#18+
Всем привет. Подскажите пожалуйста. Есть пакет, в одном цикле выполняется множество действий над данными (Извлечение, трансформация и вставка данных). Мне необходимо ограничить выполнение каждой итерации по времени, т.е. если итерация цикла превысила определенное значение в секундах, то необходимо прервать выполнение и перейти к следующему шагу цикла. Пытался сделать это имитируя ошибку в компоненте SriptTask, итерация останавливается только после завершения выполнения любого контейнера (если он запустился до фиксации исключения в SriptTask), я не знаю, как мне прервать все активные действия принудительно. Остается только перечислить их в том же SriptTask и проверять на активность, если активен, то принудительно останавливать. Может есть более правильное решение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2018, 13:30 |
|
||
|
SSIS ограничить итерации цикла по времени выполнения
|
|||
|---|---|---|---|
|
#18+
IDVTПытался сделать это имитируя ошибку в компоненте SriptTask There are limitations in using the Script Task having no control over other tasks after its execution turn Периодически всплывает такая задача. Пока общепринятая придумка только вторым sql agent job контролировать время первого agent job с пакетом SSIS внутри и гасить по превышению лимита. Заказ в Редмонд для лимита времени вроде как есть, но воз и ныне там . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2018, 14:26 |
|
||
|
SSIS ограничить итерации цикла по времени выполнения
|
|||
|---|---|---|---|
|
#18+
Andy_OLAPЗаказ в Редмонд для лимита времени вроде как есть, но воз и ныне там .Не, заказа нет. Из Редмонда пишут в этих обсуждениях: "если надо - заказывайте в коннекте". Видимо, никто не заказал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2018, 14:39 |
|
||
|
SSIS ограничить итерации цикла по времени выполнения
|
|||
|---|---|---|---|
|
#18+
alexeyvgAndy_OLAPЗаказ в Редмонд для лимита времени вроде как есть, но воз и ныне там .Не, заказа нет. Из Редмонда пишут в этих обсуждениях: "если надо - заказывайте в коннекте". Видимо, никто не заказал. Я отвлекся на проблему прикручивания нового движка в postgresql и перестал пинать этих ленивых индусов. Спасибо за информацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2018, 14:47 |
|
||
|
SSIS ограничить итерации цикла по времени выполнения
|
|||
|---|---|---|---|
|
#18+
IDVT, отказаться от цикла в ссис и перейти на внешний далее как вам уже посоветовали гасить пакет и стартовать новый ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2018, 14:52 |
|
||
|
SSIS ограничить итерации цикла по времени выполнения
|
|||
|---|---|---|---|
|
#18+
Так в том и дело, тушить джоб не есть решение, жаль что выхода нет.... Значит буду колхозить =( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2018, 14:52 |
|
||
|
SSIS ограничить итерации цикла по времени выполнения
|
|||
|---|---|---|---|
|
#18+
используем самописаное веб-приложение, которое стартует SSIS-пакеты, и убивает их после превышения заданного в приложении времени выполнения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2018, 15:50 |
|
||
|
SSIS ограничить итерации цикла по времени выполнения
|
|||
|---|---|---|---|
|
#18+
>>которое стартует SSIS-пакеты, и убивает их после аналогично, но просто соседним джобом, который сверяет время работы основного джоба, с опорной таблицей, где прописаны ограничения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2018, 16:43 |
|
||
|
SSIS ограничить итерации цикла по времени выполнения
|
|||
|---|---|---|---|
|
#18+
IDVTВсем привет. Подскажите пожалуйста. Есть пакет, в одном цикле выполняется множество действий над данными (Извлечение, трансформация и вставка данных). Мне необходимо ограничить выполнение каждой итерации по времени, т.е. если итерация цикла превысила определенное значение в секундах, то необходимо прервать выполнение и перейти к следующему шагу цикла. Пытался сделать это имитируя ошибку в компоненте SriptTask, итерация останавливается только после завершения выполнения любого контейнера (если он запустился до фиксации исключения в SriptTask), я не знаю, как мне прервать все активные действия принудительно. Остается только перечислить их в том же SriptTask и проверять на активность, если активен, то принудительно останавливать. Может есть более правильное решение? Запилил себе такое решение. А именно - таймер в работающем script task, который принудительно гасит соединение с источником данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2018, 18:04 |
|
||
|
SSIS ограничить итерации цикла по времени выполнения
|
|||
|---|---|---|---|
|
#18+
Что-то я совсем потерялся и запутался, выручайте ..... Смысл таков: Родительский пакет, запускает N'ое количество дочерних пакетов, (работаю на прямую с файлов DTSX). Добавил счетчик, по достижению которого, мне необходимо убить поток, не дожидаясь его завершения. Функция загрузки файла DTSX дочернего пакета Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. Формирование задач (потоки) Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. проверка на завершение потоков, тут вызываю метод Abort() каждому активному патоку, т.е. не завершенному, срок выполнения которых превысил допустимый (переменная TimeOutDTSXPackage) Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Скрипт, по заданному условию замечательно выходит из цикла, вся дальнейшая логика работает, НО метод Abort() на самом деле не завершает дочерний пакет. Наверняка я криво описал логику его завершения, нет навыков работы с C#, тем более с потоками. Помогите пожалуйста убить все не завершенные потоки в списке "TasksFlow". Методы решения с Джобом мне не совсем подходит, т.к. количество потоков задается переменной, сегодня 2, завтра 14 и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 13:07 |
|
||
|
SSIS ограничить итерации цикла по времени выполнения
|
|||
|---|---|---|---|
|
#18+
https://stackoverflow.com/questions/12207684/how-do-i-terminate-a-thread-in-c11 How do I terminate a thread ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 13:26 |
|
||
|
SSIS ограничить итерации цикла по времени выполнения
|
|||
|---|---|---|---|
|
#18+
IDVTЧто-то я совсем потерялся и запутался, выручайте ..... Могу ошибиться, но, во-первых, вы завершаете не выполнение пакета, а локальный поток, запустивший пакет на сервере. Во-вторых, выполняемый пакет нельзя завершить принудительно - можно лишь вежливо попросить его завершиться (это не джоба). Именно по этой причине для принудительного останова пакета я и рвал его соединение с источником. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 13:57 |
|
||
|
SSIS ограничить итерации цикла по времени выполнения
|
|||
|---|---|---|---|
|
#18+
IDVT, А у вас SSIS версии 2008 или 2012+? Если 2012+ и пакеты в режиме SSIS Catalog - их можно запускать асинхронно, получая назад код исполнения. Далее - периодически проверять статус определенного экземпляра исполнения. Если необходимо - исполнение можно прибить. Пример - см http://muxtonmumbles.blogspot.ru/2012/08/programmatically-executing-packages-in.html Подробная информация о namespace - https://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.integrationservices.aspx Если же у вас SSIS 2008 - то через jobs, если динамически - можно создать job и затем его прибить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 14:21 |
|
||
|
SSIS ограничить итерации цикла по времени выполнения
|
|||
|---|---|---|---|
|
#18+
IDVT, Этот метод должен без проблем решить поставленную задачу. Thread.Join Method (TimeSpan) https://msdn.microsoft.com/en-us/library/23f7b1ct(v=vs.110).aspx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 14:26 |
|
||
|
SSIS ограничить итерации цикла по времени выполнения
|
|||
|---|---|---|---|
|
#18+
FerdipuxIDVT, А у вас SSIS версии 2008 или 2012+? Если 2012+ и пакеты в режиме SSIS Catalog - их можно запускать асинхронно, получая назад код исполнения. Добавлю, что дефолтно они как раз асинхронно и запускаются. И нужно для синхронности делать нечто подобное: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 14:46 |
|
||
|
SSIS ограничить итерации цикла по времени выполнения
|
|||
|---|---|---|---|
|
#18+
Andy_OLAP, Так красивее: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 14:48 |
|
||
|
SSIS ограничить итерации цикла по времени выполнения
|
|||
|---|---|---|---|
|
#18+
Версия сервера 2016, полностью позволяет уйти от листинга под 2008 версию, но переписывать достаточно много, пока нет на это время. Поэтому, большинство предложенных решений не совместимо с текущим проектом, сейчас дочерний пакет даже не развернут на сервер, загружается из локальной директории. Но все это перепишу в ближайшее время, а решение требуется сейчас. a_voroninIDVT, Этот метод должен без проблем решить поставленную задачу. Thread.Join Method (TimeSpan) https://msdn.microsoft.com/en-us/library/23f7b1ct(v=vs.110).aspx Спасибо, попробую. Но не совсем понимаю полезности, мне необходимо грубо завершить дочерний пакет, в данном примере проверка на его завершение. С этим отлично справляется метод List.Any(t => t.ThreadState == System.Threading.ThreadState.Running) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 15:18 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39613398&tid=1690128]: |
0ms |
get settings: |
5ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
52ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 340ms |

| 0 / 0 |
