按照下图的方法,一步一步的创建作业:
下面是网上找的一段代码:
http://www.wangchao.net.cn/bbsdetail_580773.html
use test1
go
--设置SQL Agent 服务为自动启动
exec msdb..sp_set_sqlagent_properties @auto_start=1
go
--创建作业
exec msdb..sp_add_job @job_name=N'自动建库处理'
--创建作业步骤
declare @sql varchar(800),@dbname varchar(250)
select @sql=N'exec sp_ProcCopyDb' --调用自动建库的存储过程
,@dbname=db_name() --执行自动建库处理的数据库名
exec msdb..sp_add_jobstep @job_name=N'自动建库处理',
@step_name = '建库处理',
@subsystem = 'TSQL',
@database_name=@dbname,
@command = @sql,
@retry_attempts = 5, --重试次数
@retry_interval = 5 --重试间隔
--添加作业调度(每月最后一个工作日)
EXEC msdb.dbo.sp_add_jobschedule @job_name = N'自动建库处理',
@name = N'时间安排',
@freq_type = 32,
@active_start_time = 0, --0点开始执行
@freq_interval = 9, --每月最后一个工作日
@freq_subday_type = 1,
@freq_subday_interval = 0,
@freq_relative_interval = 16,
@freq_recurrence_factor = 1
-- 添加目标服务器
EXEC msdb.dbo.sp_add_jobserver
@job_name = N'自动建库处理' ,
@server_name = N'(local)'
/*--已知问题
由于sql生成脚本的BUG,有的数据库可能无法用生成脚本的方法进行处理
--*/
下面也是在网上找的代码:
1 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Pro_AddTask]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
4 drop procedure [dbo].[Pro_AddTask]
5 GO
6 create proc Pro_AddTask
7 @taskname varchar(100), --task name
8 @sql varchar(8000), --slq command
9 @dbname sysname='', -- default the current db
10 @freqtype varchar(6)='day', --the frequence of time :month ,week ,day
11 @freqsubtype varchar(6)='no' ,--no, hour ,minute
12 @fqinterval int=1, --the execute times
13 @fqsubinterval int=1, --the sub interval
14 @time int=000000 -- execute on some time format(hhmmss)
15 as
16 /*--creat task
17
18 --author:sky 2008.02.27
19
20 discription:
21 when @freqtype='week' when @fqinterval=
22 1 = 星期日
23 2 = 星期一
24 4 = 星期二
25 8 = 星期三
26 16 = 星期四
27 32 = 星期五
28 64 = 星期六
29 */
30 /*--eg.
31
32 --每月执行的作业
33 exec Pro_AddTask @taskname='mm',@sql='seleCT * from syscolumns',@freqtype='month'
34
35 --每周执行的作业
36 exec Pro_AddTask @taskname='ww',@sql='select * from syscolumns',@freqtype='week'
37
38 --每日00000执行的作业
39 exec Pro_AddTask @taskname='ab',@sql='select * from syscolumns'
40
41 --每日12:00:00作业
42 exec Pro_AddTask @taskname='d12',@sql='select * from syscolumns',@time=12000
43
44 --每周六12:00:00作业
45 exec Pro_AddTask @taskname='w12',@sql='select * from syscolumns',@freqtype='week',@fqinterval=64,@time=12000
46
47 --每月20号12:00:00作业
48 exec Pro_AddTask @taskname='m20',@sql='select * from syscolumns',@freqtype='month',@fqinterval=20,@time=12000
49
50 --*/
51 if isnull(@dbname,'')='' set @dbname=db_name()
52 --create task
53 exec msdb..sp_add_job @job_name=@taskname
54
55 --create task step
56 exec msdb..sp_add_jobstep @job_name=@taskname,
57 @step_name = 'data process',
58 @subsystem = 'TSQL',
59 @database_name=@dbname,
60 @command = @sql,
61 @retry_attempts = 5,
62 @retry_interval = 5
63
64 --create schedule
65 declare @ftype int,@fstype int,@ffactor int
66 select @ftype=case @freqtype
67 when 'day' then 4
68 when 'week' then 8
69 when 'month' then 16
70 end
71 ,@fstype=case @freqsubtype
72 when 'no' then 1
73 when 'hour' then 4
74 when 'minutue' then 8
75 else 0
76 end
77 set @ffactor=case @freqtype when 'day' then 0 else 1 end
78
79 EXEC msdb..sp_add_jobschedule @job_name=@taskname,
80 @name = 'schedule',
81 @freq_type=@ftype , ---4 每天,8 每周,16 每月
82 @freq_interval=@fqinterval, --作业执行的天数
83 @freq_subday_type=@fstype, --是否重复执行,0x1 在指定的时间, 0x4 分钟, 0x8 小时
84 @freq_subday_interval=@fqsubinterval, --重复周期
85 @freq_recurrence_factor=@ffactor, --重复执行,则设置为1,否则设置为0
86 @active_start_time=@time --下午00:00:00分执行
87 -- add the goal server
88 EXEC msdb.dbo.sp_add_jobserver
89 @job_name = @taskname ,
90 @server_name = N'(local)'