在SQL2005里我们可以直接建立计划任务,但是有时候我们又希望这计划任务灵活些,希望带些参数什么的。
比如我们想通过ASP.NET这样B/S结合的形式建立计划任务,通过页面临时的参数,让其建立不同的计划任务。
在查找了一些资料后发现QUARTZ可以,但是有些麻烦。后来找到了个存储过程建立计划任务方式,稍微修改了下,分享给大家
CREATE proc [dbo].[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分 as if isnull(@dbname,”)=” set @dbname=db_name() –判断作业是否存在 if exists(select * from msdb.dbo.sysjobs where name=@jobname) begin –如果作业存在则先删除原来作业 EXECUTE msdb..sp_delete_job @job_name = @jobname end –创建作业 exec msdb..sp_add_job @job_name=@jobname –创建作业步骤 exec msdb..sp_add_jobstep @job_name=@jobname, @step_name = ‘数据处理’, @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 = ‘时间安排’, @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..sp_add_jobserver @job_name = @jobname, @server_name = N'(local)’ |
在中间部分我偷懒了些,直接把存在的计划任务删除了重新建立(这样历史会丢失),要做的更完美些的化,其实可以判断如果不存在该计划任务的话,先建立,否则则修改,可以通过msdb..sp_update_job 来实现
在这里的@SQL,可以是带参数的存储过程啥的。
另外对于按月统计型的存储过程,可以这样实现:exec test 100 这样实际每次实行此存储过程的时候过程实体里都是当月信息,取年同理
create proc test @temp_month int =100 if @temp_month=100 begin set @temp_month=month(getdate()) end –下面是过程实体 |
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
TT百科:存储过程
存储的过程可以访问或修改数据库中的数据,但并不绑定到特定的数据库或对象,这提供了许多优点。
-
SQL Server 2005支持服务结束 升级何去何从
SQL Server 2005的支持就要结束了,就在2016年4月12日,SQL Server 2005的客户们应该升级了。
-
SQL Server 2005即将终止服务 你准备好了么?
2016年4月12日,微软将正式终止SQL Server 2005相关服务。微软正在终止扩展支持,这意味着不再有新特性更新,什么都没了。
-
解决SQL服务器提示属性IsLocked不可用于登录用户的错误
在SQL Server中,权限的分配很重要。特别是在用户数量众多的数据库里面,用户权限,架构的划分经常会导致权限之间的冲突,导致无法登陆。