3

如何使用 SQL 脚本安排 SQL 作业。我有大约 80 个 SQL 作业。我想安排我所有的 SQL 作业并使用脚本获取作业预定作业的详细信息。

SELECT * 
FROM [msdb].[dbo].[sysjobschedules]

上面的查询只给了我调度作业的列表,但没有提供任何调度 SQL 作业的方法。我正在寻找一个通用脚本来在数据库中调度 SQL 作业。我该怎么做?

4

3 回答 3

4

尝试这个

USE msdb ;
GO

EXEC sp_add_schedule
    @schedule_name = N'NightlyJobs' ,
    @freq_type = 4,
    @freq_interval = 1,
    @active_start_time = 010000 ;
GO

EXEC sp_attach_schedule
   @job_name = N'BackupDatabase',
   @schedule_name = N'NightlyJobs' ;
GO

EXEC sp_attach_schedule
   @job_name = N'RunReports',
   @schedule_name = N'NightlyJobs' ;
GO

sp_add_schedule

使用 tsql 创建一个 sql-server-job-job 的简单方法

生成-sql-agent-job-schedule-report

创建-MS-SQL-Server-agent-jobs-and-schedule

于 2015-07-29T17:13:19.143 回答
2

我会使用这个内置的过程来做到这一点:

sp_add_schedule

这是proc的作用:

1) 使用指定参数创建调度并返回调度 id

2) 将计划附加到现有作业。

示例代码:

declare @start_date varchar(8) = convert(varchar(8), DATEADD(day,1,GETDATE()), 112)

EXEC sp_add_schedule
   @schedule_name = N'SomeName',
   @freq_type = 1,
   @active_start_date = @start_date,
   @active_start_time = 010000; 

此外,您可以使用此查询来查找您当前的工作安排信息:

SELECT * FROM  msdb.dbo.sysschedules;

希望这可以帮助!

于 2015-07-29T17:21:28.657 回答
0

对不起,误读了这个问题。

像这样的东西怎么样:

EXEC msdb.dbo.sp_add_jobschedule @job_id=N'yourjobid',@name=N'TestSchedule1', 
   @enabled=1, 
   @freq_type=8, -- 4 - daily, 8 - weekly
   @freq_interval=2, --for weekly jobs 2 is Monday, 4 is Tuesday etc.
   @freq_subday_type=1, 
   @freq_subday_interval=0, 
   @freq_relative_interval=0, 
   @freq_recurrence_factor=1, 
   @active_start_date=20150729, 
   @active_start_time=0, 
   schedule_id=@schedule_id
GO

或对 SQL Server 2014 和 2016 使用 sp_add_schedule。SQL 2012 及更低版本 - 使用 sp_add_jobschedule

于 2015-07-29T17:04:57.603 回答