Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 быстрое завершение dtexec  [new]
нуб987
Guest
В конце длиной процедуры нужно запустить выполнение пакета, который отрабатывает примерно за полтора часа (обновление олап-базы).
Выполняю примерно такой код:
declare
   @res int
   , @cl varchar(1000)

set @cl = 'dtexec .....'
exec @res = xp_cmdshell @cl


Он завершается успешно (@res = 0) и всего за секунду.
Но зайдя в отчёты выполнения пакетов, видно, что он ещё выполняется. И только примерно через полтора часа в этих отчётах написано, что пакет завершён успешно.

Почему dtexec выдает результат раньше времени?
8 фев 18, 23:39    [21178539]     Ответить | Цитировать Сообщить модератору
 Re: быстрое завершение dtexec  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31364
нуб987
Почему dtexec выдает результат раньше времени?
Может, он запускает что то, и завершает работу, не дождавшись запущенного?
Что происходит, если запустить dtexec с теми же параметрами без xp_cmdshell?
9 фев 18, 01:33    [21178644]     Ответить | Цитировать Сообщить модератору
 Re: быстрое завершение dtexec  [new]
dao
Member

Откуда: Москва
Сообщений: 771
вообщет @res = 0 вам возвращает xp_cmdshell а не dtexec ))
9 фев 18, 09:58    [21178904]     Ответить | Цитировать Сообщить модератору
 Re: быстрое завершение dtexec  [new]
Minamoto
Member

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

By default, the process runs asynchronously – the package execution is scheduled on the server, and DTEXEC returns immediately. DTEXEC does not wait for the package execution to complete. In this case, %ERRORLEVEL% would represent whether the package execution was created successfully, and will not reflect the result of the execution.

To get the result of the package execution, you can set the $ServerOption::SYNCHRONIZED property to True. In this mode, DTEXEC will wait for the package execution to complete. If the execution was successful, the %ERRORLEVEL% will be set to 0. If it failed, it will be set to 1.
9 фев 18, 11:08    [21179125]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить