目前我们有许多工作正在安排不同的时间,有什么方法可以通过编程方式运行所有工作来同时安排。
问问题
5868 次
3 回答
3
您可以使用 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
有关详细信息,请参阅dbo.sysschedules (Transact-SQL)。
于 2013-01-25T14:11:09.903 回答
1
你应该看看SMO。此类提供对您可以在 SQL Management Studio 中执行的许多操作的编程访问。以下是有关如何使用 SMO 开始工作的链接。
于 2013-01-24T15:18:47.117 回答
0
将所有作业更改为在凌晨 2:30 运行的完整 PowerShell 脚本:
[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 语句以仅修改特定作业,如果作业有多个计划,则需要对其进行修改,因为上述仅查看第一个计划。
于 2015-03-12T10:28:25.207 回答