是否可以使用T-SQL脚本(而不是SQL Server代理程序计划创建向导)创建作业计划?

时间:2011-07-14 05:25:33

标签: sql sql-server tsql

我必须创建一个将在预定时间执行的脚本。因为我的客户端不熟悉SQL Server,所以我想根据客户端的要求使用SQL Server Agent计划创建向导在我的计算机上创建计划,然后创建创建计划的脚本(我将发送给客户端)

如何在不使用SQL Server代理计划创建向导的情况下创建T-SQL作业计划?

5 个答案:

答案 0 :(得分:6)

您可以使用management studio获取创建脚本。

在管理工作室中创建作业

然后右键单击该作业,从浮动菜单中选择Script The Job As - >创建至 - >新查询编辑器窗口。

更改脚本详细信息以满足您的需求

答案 1 :(得分:3)

使用Transact-SQL创建SQL Server代理作业:

  • 执行sp_add_job以创建作业。
  • 执行sp_add_jobstep以创建一个或多个作业步骤。
  • 执行sp_add_schedule以创建计划。
  • 执行sp_attach_schedule以将计划附加到作业。
  • 执行sp_add_jobserver以设置作业的服务器。

更多here

答案 2 :(得分:1)

您可以启动SQL Profiler,运行向导步骤,然后查看在后台执行的SQL,并将其作为准备脚本的基础。

答案 3 :(得分:1)

我看到你接受了上述答案,但是如果你正在尝试专门创建一个你的问题所说的日程表,而不是一份工作,你可以使用sp_add_schedule

答案 4 :(得分:0)

如果您知道作业的名称并想要添加新的计划,然后将其添加到多个作业中,则可以用这种方式编写脚本(这是一个示例,频率为每天2x00,每天1x,添加到2职位)

USE [msdb]
GO

DECLARE @schedule_id int, @job_id uniqueidentifier

-- create the schedule
EXEC msdb.dbo.sp_add_schedule @schedule_name=N'name of the schedule', 
        @enabled=1, 
        @freq_type=4, 
        @freq_interval=1, 
        @freq_subday_type=1, 
        @freq_subday_interval=0, 
        @freq_relative_interval=0, 
        @freq_recurrence_factor=1, 
        @active_start_date=20180703, 
        @active_end_date=99991231, 
        @active_start_time=020000, 
        @active_end_time=235959, @schedule_id = @schedule_id OUTPUT

-- add it to job 1
set @job_id = (select job_id from msdb.dbo.sysjobs where name='Name of job 1')
EXEC msdb.dbo.sp_attach_schedule @job_id=@job_id,@schedule_id= @schedule_id

-- add it to job 2
set @job_id = (select job_id from msdb.dbo.sysjobs where name='Name of job 2')
EXEC msdb.dbo.sp_attach_schedule @job_id=@job_id,@schedule_id= @schedule_id

GO