C# 是否有任何方法可以通过编程方式更新Sql Server代理作业计划时间

C# 是否有任何方法可以通过编程方式更新Sql Server代理作业计划时间,c#,sql-server,sql-server-agent,C#,Sql Server,Sql Server Agent,目前,我们有许多作业正在显示不同的时间。我们是否可以通过编程方式同时运行所有作业计划。您应该查看SMO。该类提供对SQL Management Studio中可以执行的许多操作的编程访问。下面是关于如何使用SMO启动作业的链接 你应该调查SMO。该类提供对SQL Management Studio中可以执行的许多操作的编程访问。下面是关于如何使用SMO启动作业的链接 您可以在msdb..sysschedules表中使用T-SQL更改开始时间。也许您可以创建一个存储过程并从C代码中调用它 下面的代

目前,我们有许多作业正在显示不同的时间。我们是否可以通过编程方式同时运行所有作业计划。

您应该查看SMO。该类提供对SQL Management Studio中可以执行的许多操作的编程访问。下面是关于如何使用SMO启动作业的链接


你应该调查SMO。该类提供对SQL Management Studio中可以执行的许多操作的编程访问。下面是关于如何使用SMO启动作业的链接


您可以在msdb..sysschedules表中使用T-SQL更改开始时间。也许您可以创建一个存储过程并从C代码中调用它

下面的代码段将所有作业设置为在上午6:30:45运行

-- times are stored as integers, eg. 63045 = 06:30:45
update s set
    s.active_start_time = 63045
from msdb..sysjobs j
    left join msdb..sysjobschedules js on j.job_id = js.job_id
    left join msdb..sysschedules s on js.schedule_id = s.schedule_id

有关更多信息,请参阅。

您可以在msdb..sysschedules表中使用T-SQL更改开始时间。也许您可以创建一个存储过程并从C代码中调用它

下面的代码段将所有作业设置为在上午6:30:45运行

-- times are stored as integers, eg. 63045 = 06:30:45
update s set
    s.active_start_time = 63045
from msdb..sysjobs j
    left join msdb..sysjobschedules js on j.job_id = js.job_id
    left join msdb..sysschedules s on js.schedule_id = s.schedule_id

有关详细信息,请参阅。

完整的PowerShell脚本,将所有作业更改为在凌晨2:30运行:

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo");
$svr = "."
$sql = new-object `
  Microsoft.SqlServer.Management.Smo.Server `
  $svr;;

$time = new-object -type "system.timespan" -argumentlist @(2,30,0)

$sql.jobserver.jobs | foreach-object {
    $_.jobschedules[0].activestarttimeofday = $time
    $_.jobschedules[0].alter()
}

$time可以根据需要进行调整,可以在循环中添加IF语句以仅修改特定作业,如果作业有多个计划,则需要对其进行修改,因为上面只查看第一个计划。

完整的PowerShell脚本将所有作业更改为在凌晨2:30运行:

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo");
$svr = "."
$sql = new-object `
  Microsoft.SqlServer.Management.Smo.Server `
  $svr;;

$time = new-object -type "system.timespan" -argumentlist @(2,30,0)

$sql.jobserver.jobs | foreach-object {
    $_.jobschedules[0].activestarttimeofday = $time
    $_.jobschedules[0].alter()
}

$time可以根据需要进行调整,IF语句可以添加到循环中,以仅修改特定作业,如果作业有多个计划,则需要对其进行修改,因为上面只查看第一个计划。

Seconded。如果你想改变工作计划本身,有这样一个:借调。如果您希望更改作业计划本身,请执行以下操作: