Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Подскажите есть ли в SQL Server опция прервать джоб если он выполняется больше x времени  [new]
b_Yury
Member

Откуда:
Сообщений: 19
День добрый,
SQL Server 2012,
есть ли возможность выставить ограничение по времени на выполнение джоба, чтобы если он выполняется больше 5 минут он сам останавливался.
15 янв 16, 22:20    [18686871]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите есть ли в SQL Server опция прервать джоб если он выполняется больше x времени  [new]
Glory
Member

Откуда:
Сообщений: 104751
b_Yury
чтобы если он выполняется больше 5 минут он сам останавливался.

Нет
Джоб сам за собой не следит
15 янв 16, 23:08    [18687011]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите есть ли в SQL Server опция прервать джоб если он выполняется больше x времени  [new]
Relic Hunter
Member

Откуда: AB
Сообщений: 7670
Glory,

можно https://msdn.microsoft.com/en-us/library/ms187331.aspx
15 янв 16, 23:31    [18687092]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите есть ли в SQL Server опция прервать джоб если он выполняется больше x времени  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32167
Relic Hunter
Glory,

можно https://msdn.microsoft.com/en-us/library/ms187331.aspx
Нельзя
16 янв 16, 00:30    [18687224]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите есть ли в SQL Server опция прервать джоб если он выполняется больше x времени  [new]
Relic Hunter
Member

Откуда: AB
Сообщений: 7670
alexeyvg
Relic Hunter
Glory,

можно https://msdn.microsoft.com/en-us/library/ms187331.aspx
Нельзя
Нельзя, но если очень хочется...

Создать доп. процедуру - обертку.
Внутри нее асинхронно запустить mission-critical код как job
Повисеть на WAITFOR необходимое время.
Остановить запущенный ранее job.
+
/*  
sp_async_execute - asynchronous execution of T-SQL command or stored prodecure  
2012 Antonin Foller, Motobit Software, www.motobit.com  
*/  
CREATE PROCEDURE sp_async_execute(@sql varchar(4000), @jobname varchar(200) = null,   
@database varchar(200)= null, @owner varchar(200) = null ) AS BEGIN  
    SET NOCOUNT ON;  
  
    declare @id uniqueidentifier  
    --Create unique job name if the name is not specified  
    if @jobname is null set @jobname= 'async'  
    set @jobname = @jobname + '_' + convert(varchar(64),NEWID())  
  
    if @owner is null set @owner = 'sa'  
  
    --Create a new job, get job ID  
    execute msdb..sp_add_job @jobname, @owner_login_name=@owner, @job_id=@id OUTPUT  
  
    --Specify a job server for the job  
    execute msdb..sp_add_jobserver @job_id=@id  
  
    --Specify a first step of the job - the SQL command  
    --(@on_success_action = 3 ... Go to next step)  
    execute msdb..sp_add_jobstep @job_id=@id, @step_name='Step1', @command = @sql,   
        @database_name = @database, @on_success_action = 3   
  
    --Specify next step of the job - delete the job  
    declare @deletecommand varchar(200)  
    set @deletecommand = 'execute msdb..sp_delete_job @job_name='''+@jobname+''''  
    execute msdb..sp_add_jobstep @job_id=@id, @step_name='Step2', @command = @deletecommand  
  
    --Start the job  
    execute msdb..sp_start_job @job_id=@id  
  
END  
go  
execute sp_async_execute 'execute sp..sp_AppendToFile ''j:\test.txt'', ''somedata'''  
execute sp_async_execute 'execute sp..sp_CacheDelete ''webdata\usd\*'''  
16 янв 16, 00:51    [18687277]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите есть ли в SQL Server опция прервать джоб если он выполняется больше x времени  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 28355
Relic Hunter, пример кода с WAITFOR покажите, если не сложно.
16 янв 16, 08:56    [18687599]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите есть ли в SQL Server опция прервать джоб если он выполняется больше x времени  [new]
Glory
Member

Откуда:
Сообщений: 104751
Relic Hunter
Создать доп. процедуру - обертку.

И где тут "он сам останавливался." ?
16 янв 16, 11:28    [18687796]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите есть ли в SQL Server опция прервать джоб если он выполняется больше x времени  [new]
wizli
Member

Откуда: Minsk
Сообщений: 270
Штатного функционала нет, но всегда, при большом желание, можно поизвращаться.

Например, вариант предложенный Relic Hunter или создать еще один джоб, который через определенное время проверит работает ли прежний, если да, то останавливаем, если нет, то все хорошо.
16 янв 16, 11:42    [18687826]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите есть ли в SQL Server опция прервать джоб если он выполняется больше x времени  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32167
Relic Hunter
alexeyvg
пропущено...
Нельзя
Нельзя, но если очень хочется...
Да никто не спорит, что можно написать прогу, которая остановит джоб по истечении определённого времени.
Но это не опция у джоба/не установка параметра SQL Server Agent.
16 янв 16, 12:42    [18687966]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить