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