SQL服务器用xp_cmdshell创建一个任务并设置如果任务失败每次重启

SQL Server create a task with xp_cmdshell and set if the task failed restart every time

我知道如何通过查询在 SQL Server 2008 中创建任务,但我无法配置此 "if the task fails, restart every time" 以及如何禁用 "stop the task if it runs longer than" 。

这是我的代码

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 

Example

我不认为可以从命令行完成所有操作..这就是你所能做的

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