--
定义创建作业
DECLARE
@jobid
uniqueidentifier
EXEC msdb.dbo.sp_add_job
@job_name
= N
'
作业名称
',
@job_id
=
@jobid OUTPUT
--
定义作业步骤
DECLARE
@sql
nvarchar(
400),
@dbname sysname
SELECT
@dbname
=
DB_NAME(),
--
作业步骤在当前数据库中执行
@sql
=N
'
--作业步骤内容
'
--
一般定义的是使用TSQL处理的作业,这里定义要执行的Transact-SQL语句
EXEC msdb.dbo.sp_add_jobstep
@job_id
=
@jobid,
@step_name
= N
'
作业步骤名称
',
@subsystem
=
'
TSQL
',
--
步骤的类型,一般为TSQL
@database_name
=
@dbname,
@command
=
@sql
--
创建调度(使用后面专门定义的几种作业调度模板)
EXEC msdb..sp_add_jobschedule
@job_id
=
@jobid,
@name
= N
'
调度名称
',
@freq_type
=
4,
--
每天
@freq_interval
=
1,
--
指定每多少天发生一次,这里是1天.
@freq_subday_type
=
0x8,
--
重复方式,0x1=在指定的时间,0x4=多少分钟,0x8=多少小时执行一次
@freq_subday_interval
=
1,
--
重复周期数,这里每小时执行一次
@active_start_date
=
NULL,
--
作业执行的开始日期,为NULL时表示当前日期,格式为YYYYMMDD
@active_end_date
=
99991231,
--
作业执行的停止日期,默认为99991231,格式为YYYYMMDD
@active_start_time
=
00000,
--
作业执行的开始时间,格式为HHMMSS
@active_end_time
=
235959
--
作业执行的停止时间,格式为HHMMSS
--
添加目标服务器
DECLARE
@servername sysname
SET
@servername
=
CONVERT(
nvarchar(
128),SERVERPROPERTY(N
'
ServerName
'))
EXEC msdb.dbo.sp_add_jobserver
@job_id
=
@jobid,
@server_name
=
@servername
--
使用当前SQL实例
--
调度模板定义
--
/*--日调度
EXEC msdb..sp_add_jobschedule
@job_id
=
@jobid,
@name
= N
'
调度名称
',
@freq_type
=
4,
--
每天
@freq_interval
=
1,
--
指定每多少天发生一次,这里是1天.
@freq_subday_type
=
0x8,
--
重复方式,0x1=在指定的时间,0x4=多少分钟,0x8=多少小时执行一次
@freq_subday_interval
=
1,
--
重复周期数,这里每小时执行一次
@active_start_date
=
NULL,
--
作业执行的开始日期,为NULL时表示当前日期,格式为YYYYMMDD
@active_end_date
=
99991231,
--
作业执行的停止日期,默认为99991231,格式为YYYYMMDD
@active_start_time
=
00000,
--
作业执行的开始时间,格式为HHMMSS
@active_end_time
=
235959
--
作业执行的停止时间,格式为HHMMSS
--
*/
--
/*--周调度
EXEC msdb.dbo.sp_add_jobschedule
@job_id
=
@jobid,
@name
= N
'
调度名称
',
@freq_type
=
8,
--
每周
@freq_recurrence_factor
=
1,
--
每多少周执行一次,这里是每周
@freq_interval
=
62,
--
在星期几执行,由POWER(2,N)表示,N的值为0~6,代表星期日~星期六,如果指定两个,则将值相加,例如,值为65表示在星期天和星期日执行(POWER(2,0)+POWER(2,6))
@freq_subday_type
=
0x8,
--
重复方式,0x1=在指定的时间,0x4=多少分钟,0x8=多少小时执行一次
@freq_subday_interval
=
1,
--
重复周期数,这里每小时执行一次
@active_start_date
=
NULL,
--
作业执行的开始日期,为NULL时表示当前日期,格式为YYYYMMDD
@active_end_date
=
99991231,
--
作业执行的停止日期,默认为99991231,格式为YYYYMMDD
@active_start_time
=
00000,
--
作业执行的开始时间,格式为HHMMSS
@active_end_time
=
235959
--
作业执行的停止时间,格式为HHMMSS
--
*/
--
/*--月调度(每X个月的每月几号)
EXEC msdb.dbo.sp_add_jobschedule
@job_id
=
@jobid,
@name
= N
'
调度名称
',
@freq_type
=
16,
--
每月
@freq_recurrence_factor
=
2,
--
每多少月执行一次,这里是每2个月
@freq_interval
=
2,
--
在执行月的第几天执行,这里是第2天
@freq_subday_type
=
0x8,
--
重复方式,0x1=在指定的时间,0x4=多少分钟,0x8=多少小时执行一次
@freq_subday_interval
=
1,
--
重复周期数,这里每小时执行一次
@active_start_date
=
NULL,
--
作业执行的开始日期,为NULL时表示当前日期,格式为YYYYMMDD
@active_end_date
=
99991231,
--
作业执行的停止日期,默认为99991231,格式为YYYYMMDD
@active_start_time
=
00000,
--
作业执行的开始时间,格式为HHMMSS
@active_end_time
=
235959
--
作业执行的停止时间,格式为HHMMSS
--
*/
--
/*--月调度(每X个月的相对时间)
EXEC msdb.dbo.sp_add_jobschedule
@job_id
=
@jobid,
@name
= N
'
调度名称
',
@freq_type
=
32,
--
每月
@freq_recurrence_factor
=
2,
--
每多少月执行一次,这里是每2个月
@freq_interval
=
9,
--
在当月的那个时间执行,1~7=星期日至星期六,8=日 ,9=工作日,10=周末
@freq_relative_interval
=
1,
--
在第几个相对时间执行,允许的值为1,2,4,8代表第1~4个相对时间,16表示最后一个相对时间
@freq_subday_type
=
0x8,
--
重复方式,0x1=在指定的时间,0x4=多少分钟,0x8=多少小时执行一次
@freq_subday_interval
=
1,
--
重复周期数,这里每小时执行一次
@active_start_date
=
NULL,
--
作业执行的开始日期,为NULL时表示当前日期,格式为YYYYMMDD
@active_end_date
=
99991231,
--
作业执行的停止日期,默认为99991231,格式为YYYYMMDD
@active_start_time
=
00000,
--
作业执行的开始时间,格式为HHMMSS
@active_end_time
=
235959
--
作业执行的停止时间,格式为HHMMSS
--
*/
--
/*--在特定时候执行的作业调度
EXEC msdb.dbo.sp_add_jobschedule
@job_id
=
@jobid,
@name
= N
'
调度名称
',
@freq_type
=
64
--
64=在SQLServerAgent 服务启动时运行,128=计算机空闲时运行
--
*/
--
/*--只执行一次的作业调度
EXEC msdb..sp_add_jobschedule
@job_id
=
@jobid,
@name
= N
'
调度名称
',
@freq_type
=
1,
--
仅执行一次
@active_start_date
=
NULL,
--
作业执行的开始日期,为NULL时表示当前日期,格式为YYYYMMDD
@active_start_time
=
00000
--
作业执行的开始时间,格式为HHMMSS
--
*/