Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Как задержать выполнение шага в задании до окончания предыдущего с CmdExec  [new]
ArkadyL
Member

Откуда: СПб
Сообщений: 164
Здравствуйте!

У меня создано задание из двух шагов, на первом запускается некая exe-программа и формирует файл. На втором - процедура сервера его обрабатывает.
Однако второй шаг начинает выполняться, не дожидаясь окончания работы программы на первом шаге, и ,естественно, сразу безрезультатно заканчивается, не увидев ещё формирующийся файл.
Подскажите, пожалуйста, что надо сделать, чтобы второй шаг начал выполняться после полного окончания предыдущего.
25 июл 18, 13:01    [21600970]     Ответить | Цитировать Сообщить модератору
 Re: Как задержать выполнение шага в задании до окончания предыдущего с CmdExec  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2414
ArkadyL,

первый шаг запускает процедуру, которая запускает что-то и ждет ответа от этого чего-то
25 июл 18, 13:30    [21601070]     Ответить | Цитировать Сообщить модератору
 Re: Как задержать выполнение шага в задании до окончания предыдущего с CmdExec  [new]
ArkadyL
Member

Откуда: СПб
Сообщений: 164
StarikNavy, скачивает файл с сайта. И вот пока она его скачивает и находится в диспетчере задач, не хотелось бы, чтобы 2-й шаг начинался.
25 июл 18, 13:55    [21601180]     Ответить | Цитировать Сообщить модератору
 Re: Как задержать выполнение шага в задании до окончания предыдущего с CmdExec  [new]
aleks222
Member

Откуда:
Сообщений: 1500
ArkadyL
У меня создано задание из двух шагов, на первом запускается некая exe-программа и формирует файл. На втором - процедура сервера его обрабатывает.
Однако второй шаг начинает выполняться, не дожидаясь окончания работы программы на первом шаге, и ,естественно, сразу безрезультатно заканчивается, не увидев ещё формирующийся файл.
Подскажите, пожалуйста, что надо сделать, чтобы второй шаг начал выполняться после полного окончания предыдущего.


Что за чудеса глаголите?
Никогда шаг job-а не запускается ДО завершения текущего.
Протрите глаза.
25 июл 18, 14:04    [21601200]     Ответить | Цитировать Сообщить модератору
 Re: Как задержать выполнение шага в задании до окончания предыдущего с CmdExec  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
ArkadyL
У меня создано задание из двух шагов, на первом запускается некая exe-программа и формирует файл. На втором - процедура сервера его обрабатывает.
Однако второй шаг начинает выполняться, не дожидаясь окончания работы программы на первом шаге, и ,естественно, сразу безрезультатно заканчивается, не увидев ещё формирующийся файл.
Когда запускаете эту "некая exe-программа" ил cmd, она сразу завершает выполнение, до окончания копирования файла?
25 июл 18, 14:15    [21601223]     Ответить | Цитировать Сообщить модератору
 Re: Как задержать выполнение шага в задании до окончания предыдущего с CmdExec  [new]
ArkadyL
Member

Откуда: СПб
Сообщений: 164
Да. Вот журнал. Пишет, что выполнился за секунду, хотя файл копируется минут 10. И сразу запускается 2-й шаг.

К сообщению приложен файл. Размер - 30Kb
25 июл 18, 14:24    [21601229]     Ответить | Цитировать Сообщить модератору
 Re: Как задержать выполнение шага в задании до окончания предыдущего с CmdExec  [new]
ArkadyL
Member

Откуда: СПб
Сообщений: 164
Программа продолжает выполняться. Она скачивает файл, затем его разархивирует. И всё это время её видно в диспетчере задач как выполняющуюся.
25 июл 18, 14:34    [21601270]     Ответить | Цитировать Сообщить модератору
 Re: Как задержать выполнение шага в задании до окончания предыдущего с CmdExec  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
вызываете эту вашу программу через батник методом call my.exe? тогда очевидно
25 июл 18, 14:38    [21601299]     Ответить | Цитировать Сообщить модератору
 Re: Как задержать выполнение шага в задании до окончания предыдущего с CmdExec  [new]
aleks222
Member

Откуда:
Сообщений: 1500
ArkadyL
Программа продолжает выполняться. Она скачивает файл, затем его разархивирует. И всё это время её видно в диспетчере задач как выполняющуюся.


Осталось показать код запуска.
25 июл 18, 14:39    [21601304]     Ответить | Цитировать Сообщить модератору
 Re: Как задержать выполнение шага в задании до окончания предыдущего с CmdExec  [new]
ArkadyL
Member

Откуда: СПб
Сообщений: 164
Вот так. Никакого специального кода завершения, случайно, указывать не надо?

К сообщению приложен файл. Размер - 40Kb
25 июл 18, 14:48    [21601335]     Ответить | Цитировать Сообщить модератору
 Re: Как задержать выполнение шага в задании до окончания предыдущего с CmdExec  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
ArkadyL,

а в "Дополнительно" что задано?
25 июл 18, 14:59    [21601402]     Ответить | Цитировать Сообщить модератору
 Re: Как задержать выполнение шага в задании до окончания предыдущего с CmdExec  [new]
ArkadyL
Member

Откуда: СПб
Сообщений: 164
Так, ничего особенного...

К сообщению приложен файл. Размер - 30Kb
25 июл 18, 15:03    [21601427]     Ответить | Цитировать Сообщить модератору
 Re: Как задержать выполнение шага в задании до окончания предыдущего с CmdExec  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8805
ArkadyL,

вообще прикольная тема - научить сервер баз данных забивать гвозди и варить суп.
Создйте отдельное приложение для загрузки или используйте SSIS пакет.
25 июл 18, 15:34    [21601597]     Ответить | Цитировать Сообщить модератору
 Re: Как задержать выполнение шага в задании до окончания предыдущего с CmdExec  [new]
komrad
Member

Откуда:
Сообщений: 5735
ArkadyL
Так, ничего особенного...


попробуйте в качестве эксперимента заменить вызов вашей программы на следующее:
ping localhost -n 30
если второй шаг будет ждать окончания первого, то проблема в вашем приложении

в качестве решения можно предложить вставку промежуточного шага, который циклически будет проверять наличие файла в папке, если файл там появится, то выход из цикла

папка, разумеется, должна быть отдельная, куда файл должен будет копироваться/перемещаться после скачивания
25 июл 18, 15:50    [21601726]     Ответить | Цитировать Сообщить модератору
 Re: Как задержать выполнение шага в задании до окончания предыдущего с CmdExec  [new]
ArkadyL
Member

Откуда: СПб
Сообщений: 164
Дорогой товарищ, я создал отдельное приложение для одной загрузки и процедуру для другой загрузки. Не подскажете, может ли задание, предусматривающее в своих шагах запуск exe-файлов и сценариев T-SQL, выполнять эти шаги последовательно, каждый после завершения предыдущего, какого бы вида он ни был?
25 июл 18, 15:51    [21601729]     Ответить | Цитировать Сообщить модератору
 Re: Как задержать выполнение шага в задании до окончания предыдущего с CmdExec  [new]
komrad
Member

Откуда:
Сообщений: 5735
ArkadyL
Дорогой товарищ, я создал отдельное приложение для одной загрузки и процедуру для другой загрузки. Не подскажете, может ли задание, предусматривающее в своих шагах запуск exe-файлов и сценариев T-SQL, выполнять эти шаги последовательно, каждый после завершения предыдущего, какого бы вида он ни был?


подскажу : может, и оно так именно и работает - по шагам, по очередности

вы попробовали джоб с пингом ?
25 июл 18, 15:54    [21601741]     Ответить | Цитировать Сообщить модератору
 Re: Как задержать выполнение шага в задании до окончания предыдущего с CmdExec  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
ArkadyL
Дорогой товарищ, я создал отдельное приложение для одной загрузки и процедуру для другой загрузки. Не подскажете, может ли задание, предусматривающее в своих шагах запуск exe-файлов и сценариев T-SQL, выполнять эти шаги последовательно, каждый после завершения предыдущего, какого бы вида он ни был?
Т.е. может ли сервер контролировать ваше левое приложение на предмет того, не запускаете ли это приложение какие-то асинхронные процессы и не завершает ли вы ваше приложение свое выполнение до того, как эти процессы отработают? Нет, не может. Не изобретайте велосипедов, и не будет у вас боли от езды на них.
25 июл 18, 15:55    [21601750]     Ответить | Цитировать Сообщить модератору
 Re: Как задержать выполнение шага в задании до окончания предыдущего с CmdExec  [new]
ArkadyL
Member

Откуда: СПб
Сообщений: 164
komrad, это я Владиславу написал.
Попробую ping, но к ресурсу может не быть доступа, тогда файла никогда не будет
25 июл 18, 15:59    [21601762]     Ответить | Цитировать Сообщить модератору
 Re: Как задержать выполнение шага в задании до окончания предыдущего с CmdExec  [new]
komrad
Member

Откуда:
Сообщений: 5735
Гавриленко Сергей Алексеевич
Т.е. может ли сервер контролировать ваше левое приложение на предмет того, не запускает ли это приложение какие-то асинхронные процессы и не завершает ли вы ваше приложение свое выполнение до того, как эти процессы отработают?

+1

странно, что такой прекрасный самопис не нравится сиквелу ;)
25 июл 18, 15:59    [21601763]     Ответить | Цитировать Сообщить модератору
 Re: Как задержать выполнение шага в задании до окончания предыдущего с CmdExec  [new]
ArkadyL
Member

Откуда: СПб
Сообщений: 164
Гавриленко Сергей Алексеевич, все процессы правые и запускаются через RunAndWait. Написал же, что 2-й шаг начинается до того, как приложение на 1-ом закончит свою работу и исчезнет из диспетчера задач.
Если такое сочетание типов процессов в шагах недопустимо, я изобрету что-нибудь другое.
25 июл 18, 16:03    [21601775]     Ответить | Цитировать Сообщить модератору
 Re: Как задержать выполнение шага в задании до окончания предыдущего с CmdExec  [new]
Col
Member

Откуда: Торонто
Сообщений: 183
ArkadyL
Сделайте для второго шага отдельный Job и запускайте его из цомандной строки, после выполнения первого кода.
Примерно вот так:

set path=C:\Program Files\Microsoft SQL Server\90\tools\binn\;%PATH%

echo Starting MY ETL > my.log

sqlcmd.exe -S "myserver" -Q "execute msdb.dbo.sp_start_job @job_name = 'myjob' " >> my.log
25 июл 18, 16:12    [21601812]     Ответить | Цитировать Сообщить модератору
 Re: Как задержать выполнение шага в задании до окончания предыдущего с CmdExec  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8805
ArkadyL,

теперь настройте Планировщик Windows на запуск приложения. Приложение загрузит данные, произведет загрузку данных на сервер и выполнит процедуру обработки данных.
25 июл 18, 16:27    [21601865]     Ответить | Цитировать Сообщить модератору
 Re: Как задержать выполнение шага в задании до окончания предыдущего с CmdExec  [new]
tunknown
Member

Откуда:
Сообщений: 775
ArkadyL
Однако второй шаг начинает выполняться, не дожидаясь окончания работы программы на первом шаге, и ,естественно, сразу безрезультатно заканчивается, не увидев ещё формирующийся файл.
Может быть нужно в шаге запускать не сам .exe, а через какого-то из них:
start /wait
cmd
25 июл 18, 17:31    [21602118]     Ответить | Цитировать Сообщить модератору
 Re: Как задержать выполнение шага в задании до окончания предыдущего с CmdExec  [new]
aleks222
Member

Откуда:
Сообщений: 1500
Как много ценных советов.
Проще надо.

1. Запустите вашу прогу врукопашную
2. и посмотрите "воотчуюю" и в диспетчере задач: когда ж она заканчивает работу?
25 июл 18, 18:39    [21602359]     Ответить | Цитировать Сообщить модератору
 Re: Как задержать выполнение шага в задании до окончания предыдущего с CmdExec  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
aleks222
Как много ценных советов.
Проще надо.

1. Запустите вашу прогу врукопашную
2. и посмотрите "воотчуюю" и в диспетчере задач: когда ж она заканчивает работу?
Желательно еще под учетной записью агента.
25 июл 18, 18:55    [21602420]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить