现在的位置: 首页 > 综合 > 正文

sql server 创建job的存储过程

2014年01月25日 ⁄ 综合 ⁄ 共 1675字 ⁄ 字号 评论关闭

/*
create by cxw, 080711
descript: 通过存储过程创建job
*/

execute p_createjob  'j_clientQuit',
   'update tbl_yhdwinfo  set    phonezt  = 3   where usertype = 2',
   'jfxt',
   'day',
   1,
   200000

alter   proc   p_createjob
  @jobname   varchar(100), --作业名称  
  @sql   varchar(8000), --要执行的命令  
  @dbname   sysname='', --默认为当前的数据库名  
  @freqtype   varchar(6)='day', --时间周期,month   月,week   周,day   日  
  @fsinterval   int=1, --相对于每日的重复次数  
  @time   int=170000 --开始执行时间,对于重复执行的作业,将从0点到23:59分
WITH ENCRYPTION 
as  
  if   isnull(@dbname,'')=''   set   @dbname=db_name()  
   
  --创建作业  
  exec   msdb..sp_add_job   @job_name=@jobname  
   
  --创建作业步骤  
  exec   msdb..sp_add_jobstep   @job_name=@jobname,
      @step_name   =   @jobname,  
      @subsystem   =   'TSQL',  
      @database_name=@dbname,  
    @command   =   @sql,  
      @retry_attempts   =   5,   --重试次数  
    @retry_interval   =   5     --重试间隔  

   
  --创建调度  
  declare   @ftype   int,    @fstype   int, @ffactor   int  
 
  select   @ftype = case   @freqtype  
    when   'day'   then   4  
    when   'week'   then   8  
      when   'month'   then   16  
             end,
    @fstype = case   @fsinterval  
    when   1   then   0   else   8  
    end  
 
  if   @fsinterval<>1   set   @time=0  
 
  set   @ffactor = case   @freqtype  
    when   'day'   then   0   else   1  
    end  
   
  EXEC   msdb..sp_add_jobschedule   @job_name=@jobname,    
          @name   =   @jobname,  
        @freq_type=@ftype   ,   --每天,8   每周,16   每月  
        @freq_interval=1, --重复执行次数  
          @freq_subday_type=@fstype, --是否重复执行  
          @freq_subday_interval=@fsinterval,   --重复周期  
          @freq_recurrence_factor=@ffactor,  
          @active_start_time=@time     --下午17:00:00分执行  
   
  --   添加目标服务器  
  EXEC   msdb.dbo.sp_add_jobserver  @job_name      =   @jobname,  
          @server_name   =   N'(local)'

抱歉!评论已关闭.