sql数据库作业,定期执行存储过程

IF EXISTS (
       SELECT *
       FROM   dbo.sysobjects
       WHERE  id = OBJECT_ID(N'[dbo].[Job_UpdateCustomerStatus]')
              AND OBJECTPROPERTY(id, N'IsProcedure') = 1
   )
 drop proc   [dbo].[Job_UpdateCustomerStatus]
 go
 create proc [dbo].[Job_UpdateCustomerStatus]
 as
     BEGIN
  --定义创建作业
  DECLARE @jobid uniqueidentifier,@jobname sysname
        set @jobname = N'UpdateCustomerStatus'
       
        IF EXISTS(SELECT * FROM msdb.dbo.sysjobs WHERE name=@jobname)
  EXEC msdb.dbo.sp_delete_job @job_name=@jobname
        
  EXEC msdb.dbo.sp_add_job
   @job_name= N'UpdateCustomerStatus',
   @job_id=@jobid OUTPUT

  --定义作业步骤
  DECLARE @sql nvarchar(400),@dbname sysname
  SELECT @dbname='rike', --作业步骤在数据库[rike]中执行
      @sql=N'exec Customer_UpdateCustomerStatus'--一般定义的是使用TSQL处理的作业,这里定义要执行的Transact-SQL语句
  EXEC msdb.dbo.sp_add_jobstep
   @job_id=@jobid,
   @step_name= N'UpdateCustomerStatusStep',
   @subsystem='TSQL', --步骤的类型,一般为TSQL
   @database_name=@dbname,
   @command=@sql

  --创建调度(使用后面专门定义的几种作业调度模板)
  EXEC msdb..sp_add_jobschedule
   @job_id=@jobid,
   @name= N'UpdateCustomerStatusDispatcher',
   @freq_type=4,                --每天
   @freq_interval=1,            --指定每多少天发生一次,这里是1天.
   @freq_subday_type=0x4,       --重复方式,0x1=在指定的时间,0x4=多少分钟,0x8=多少小时执行一次
   @freq_subday_interval=5,     --重复周期数,这里每小时执行一次
   @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'DailyScheduling',
   @freq_type=4,                --每天
   @freq_interval=1,            --指定每多少天发生一次,这里是1天.
   @freq_subday_type=0x8,       --重复方式,0x1=在指定的时间,0x4=多少分钟,0x8=多少小时执行一次
   @freq_subday_interval=8,     --重复周期数,这里每8小时执行一次
   @active_start_date=NULL,     --作业执行的开始日期,为NULL时表示当前日期,格式为YYYYMMDD
   @active_end_date=99991231,   --作业执行的停止日期,默认为99991231,格式为YYYYMMDD
   @active_start_time=00000,    --作业执行的开始时间,格式为HHMMSS
   @active_end_time=235959      --作业执行的停止时间,格式为HHMMSS
  --*/
      END
GO
exec [dbo].[Job_UpdateCustomerStatus]
go

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值