SQL Server создайте задачу с помощью xp_cmdshell и установите, если задача не удалась, перезапускайте каждый раз

Я знаю, как создать задачу в SQL Server 2008 по запросу, но я не могу настроить это "если задача не выполняется, перезапускать каждый раз" и как отключить "остановить задачу, если она выполняется дольше" .

Это мой код

declare @cmd varchar(max), @Path varchar(max), @FileToExecute varchar(max)

set @Path = 'C:\MyAppFolder'
set @FileToExecute = 'MyApp.exe'

set @cmd = 'schtasks /create /tn "DataTask" /tr "'''+@Path+'\'+@FileToExecute +'''" /sc onstart /RU Administrator /RP password /F /delay 0015:00'  

exec xp_cmdshell @cmd  , NO_OUTPUT

set @cmd = 'schtasks /run /TN "DataTask"'            
exec xp_cmdshell @cmd 

пример

2 ответа

Решение

Я не думаю, что можно сделать все это из командной строки.. это все, что вы можете сделать

https://msdn.microsoft.com/en-us/library/windows/desktop/bb736357(v=vs.85).aspx

но... вы могли бы сделать файл XML, экспортировав существующую работу:

schtasks /create /xml "MyExportFile.xml" /tn "Name of the New Task"

и настройте параметры следующим образом:

<Settings>
    <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>
    <StartWhenAvailable>true</StartWhenAvailable>
    <RestartOnFailure>
      <Interval>PT30M</Interval>
      <Count>5</Count>
    </RestartOnFailure>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
</Settings>

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

Я просто делаю изменения в своей задаче, и после этого я экспортировал ее в XML-файл, чтобы создать новую задачу из XML с включенными изменениями.

Это сработало для моего

declare @cmd varchar(max), @Path varchar(max), @FileToExecute varchar(max), @XmlFile varchar(100)

set @Path = 'C:\MyAppFolder'
set @FileToExecute = 'MyApp.exe'
set @XmlFile = 'MyApp.xml'

set @cmd = 'schtasks /create /tn "DataTask" /tr "'+@Path+'\'+@XmlFile+'"  /RU Administrator /RP password'  

exec xp_cmdshell @cmd  , NO_OUTPUT

set @cmd = 'schtasks /run /TN "DataTask"'            
exec xp_cmdshell @cmd 
Другие вопросы по тегам