利用作业,每个月自动创建表

按照下图的方法,一步一步的创建作业:
CreateJob.JPG



下面是网上找的一段代码:
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
   --每月2012: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)'

posted @ 2009-03-19 14:18  LeimOO  阅读(215)  评论(0编辑  收藏  举报