SQL Server使用xp_cmdshell创建任务,并设置是否每次都重新启动任务失败

时间:2018-06-14 17:08:14

标签: sql-server scheduler schtasks

我知道如何通过查询在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 

Example

2 个答案:

答案 0 :(得分:0)

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

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>

你可以使用它作为模板从命令行导入

答案 1 :(得分:0)

我只是对我的任务进行了更改,然后导出到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